You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

使用pynetbox从CSV批量创建NetBox设备无报错但未成功的问题求助

用pynetbox从CSV批量创建NetBox设备无报错但未成功的问题求助

我正在尝试用pynetbox从CSV文件批量创建NetBox设备,但遇到了一个棘手的问题——代码运行完全没有报错,但设备就是没出现在NetBox里。我已经做了几个测试,单独创建设备是成功的,但批量处理CSV就不行,实在搞不清楚哪里出问题了,想请大家帮忙看看!

首先是我最初写的代码:

import os
import csv
import pynetbox

from pynetbox import api

def populate_device(dev):
    nb = pynetbox.api(
        url='<NetboxURL>',
        token='<Token>'
        )
                        
    nb.dcim.devices.create(
        name=dev,
        device_type=89,
        role=40,
        site=9,         
    )

os.chdir('<Directory>')    
with open('<File>.csv', 'r') as file:
    reader = csv.DictReader(file)
    for row in reader:
        dev=row["name"]
        populate_device(dev)

这段代码跑起来后,既不创建设备,也没有任何错误提示。后来我修改了create的部分,加上了打印结果的逻辑:

result = nb.dcim.devices.create(  
        name=dev,  
        device_type=85,  
        role=35,  
        site=36,                     
    )  
    print(result)   

结果运行后print(result)根本没有输出,设备还是没创建出来。

我又尝试了加异常捕获的版本,想着至少能看到错误信息:

os.chdir('<Directory>')    
with open('<File>.csv', 'r') as file:
    reader = csv.DictReader(file)
    for row in reader:
        try:
            nb.dcim.devices.create(
                name=row["name"],
                device_type=89,
                role=40,
                site=9,
            )
        except pynetbox.RequestError as e:
            print(e.error)

结果还是一样,没有设备被创建,也没有任何异常信息打印出来。

但奇怪的是,如果我单独运行下面这段代码,设备是能正常在NetBox里创建出来的:

nb.dcim.devices.create(
        name="TEST",
        device_type=89,
        role=40,
        site=9,         
    )

这说明我的NetBox连接是通的,账号也有创建设备的权限。我猜可能是变量映射或者数据类型的问题,但我刚接触pynetbox和Python,实在找不到这个“低级错误”在哪,麻烦各位大佬帮忙指点一下!

备注:内容来源于stack exchange,提问作者user3366942

火山引擎 最新活动