我正在尝试使用CentOS中的python与NetBox进行交互。我所做的是我安装了带有docker的netbox,所以每次我从centOS运行"docker-compose up“时,我都能在浏览器中访问netbox api。我设法手动添加了一些新设备。所以我现在要做的是,我想要写一个python文件,以便获得我手动添加的信息。我的问题是我不能理解文档,而且他们在文档中提供的那些简单的示例什么都不起作用。
我所做的唯一一件事就是通过导入请求包来检索下面的json回复:
{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/'}所以我基本上是这样做的:
rest_response = requests.get(url="http://ansible.../api/")但这只是非常简单和基本的事情。如果我更改了url,我可以从每个API得到回复。例如,我如何才能真正与NetBox交互,并检索我使用python手动添加到API中的设备?
发布于 2020-07-27 21:27:52
试试官方的python客户端,它使API的访问方式变得更容易,并且包含了示例https://github.com/digitalocean/pynetbox。
发布于 2021-10-28 10:50:46
我推荐使用pynetbox模块。
示例:
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)发布于 2020-09-18 14:06:08
下面是一个helloworld示例:
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实例。
https://stackoverflow.com/questions/62451485
复制相似问题