首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用python与NetBox API交互

如何使用python与NetBox API交互
EN

Stack Overflow用户
提问于 2020-06-18 21:46:59
回答 3查看 3.5K关注 0票数 0

我正在尝试使用CentOS中的python与NetBox进行交互。我所做的是我安装了带有docker的netbox,所以每次我从centOS运行"docker-compose up“时,我都能在浏览器中访问netbox api。我设法手动添加了一些新设备。所以我现在要做的是,我想要写一个python文件,以便获得我手动添加的信息。我的问题是我不能理解文档,而且他们在文档中提供的那些简单的示例什么都不起作用。

我所做的唯一一件事就是通过导入请求包来检索下面的json回复:

代码语言:javascript
复制
{u'dcim': u'http://ansible.mpl.nh:2435/api/dcim/', u'circuits': u'http://ansible.mpl.nh:2435/api/circuits/', u'ipam': u'http://ansible.mpl.nh:2435/api/ipam/', u'secrets': u'http://ansible.mpl.nh:2435/api/secrets/', u'tenancy': u'http://ansible.mpl.nh:2435/api/tenancy/', u'extras': u'http://ansible.mpl.nh:2435/api/extras/', u'virtualization': u'http://ansible.mpl.nh:2435/api/virtualization/', u'plugins': u'http://ansible.mpl.nh:2435/api/plugins/'}

所以我基本上是这样做的:

代码语言:javascript
复制
rest_response = requests.get(url="http://ansible.../api/")

但这只是非常简单和基本的事情。如果我更改了url,我可以从每个API得到回复。例如,我如何才能真正与NetBox交互,并检索我使用python手动添加到API中的设备?

EN

回答 3

Stack Overflow用户

发布于 2020-07-27 21:27:52

试试官方的python客户端,它使API的访问方式变得更容易,并且包含了示例https://github.com/digitalocean/pynetbox

票数 2
EN

Stack Overflow用户

发布于 2021-10-28 10:50:46

我推荐使用pynetbox模块。

示例:

代码语言:javascript
复制
import pynetbox
nb = pynetbox.api(url='https://netbox-url/', token='<API-token>')

#fetch all devices
nb_devicelist = nb.dcim.devices.all()

# focus on 1 single device
nb_device = nb_devicelist[1]
print (nb_device)

# do something with all devices in the list
for nb_device in nb_devicelist:
    platform = str(nb_device.platform)
    pri_ip = str(nb_device.primary_ip)
    asset = nb_device.asset_tag
    print (nb_device,platform,pri_ip,asset)
票数 1
EN

Stack Overflow用户

发布于 2020-09-18 14:06:08

下面是一个helloworld示例:

代码语言:javascript
复制
import json, requests

url = 'http://127.0.0.1:8000/api/dcim/devices/'
params = { 'name': "junos-dev-ex4200" }
headers = {'Authorization': "Token xyz123456789" }                    

r = requests.get(url, params=params, headers=headers)                       

print(json.dumps(r.json(), indent=4))

详细的应用程序接口文档可以在http://127.0.0.1:8000/api/docs/上找到。这里的127.0.0.1:8000是您的netbox实例。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62451485

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档