我有一个文本文件,其中有一个主机名列表:
router-1
firewall-1
firewall-2
distro-1我想要做的是从这个文件创建一个列表,然后从这个列表中搜索一个特定的文本字符串来确定设备的device_platform。然后用它创建一个类似于这样的字典:
[
{'hostname': 'router-1', 'device_platform': 'cisco_ios'},
{'hostname': 'firewall-1', 'device_platform': 'juniper'},
{'hostname': 'firewall-2', 'device_platform': 'cisco_asa'},
{'hostname': 'distro-1', 'device_platform': 'broadcom_icos'}
]到目前为止,这就是我所拥有的,网络抓取部分工作。我只需要知道如何添加一个部分来创建列表,然后从这个列表中抓取信息并返回到创建一个像上面这样的字典。
import requests
import urllib3
with open('devices.txt', 'r') as f:
host = f.read().splitlines()
print(host)
for device in host:
url = f'http://nunya.com/device/{device}.nunya.com/config'
urllib3.disable_warnings()
request = requests.get(url).text
if 'event manager applet' in request and 'pager' not in request:
device_platform = 'cisco_ios'
elif 'junos' in request:
device_platform = 'juniper'
elif 'pager' in request:
device_platform = 'cisco_asa'
else:
device_platform = 'broadcom_icos'
print(f'hostname: {device}, device_platform: {device_platform}')发布于 2022-04-04 13:08:02
我知道你最终想要的是这种形式,
[
{'hostname': 'router-1', 'device_platform': 'cisco_ios'},
{'hostname': 'firewall-1', 'device_platform': 'juniper'},
{'hostname': 'firewall-2', 'device_platform': 'cisco_asa'},
{'hostname': 'distro-1', 'device_platform': 'broadcom_icos'}
]这是一个list of dictionaries,您的代码不需要太多的更改就可以得到它。
只需在list循环开始之前启动一个空的dictionaries,并在循环进行时继续向其追加所需的dictionaries。以下是代码:
import requests
import urllib3
with open('devices.txt', 'r') as f:
host = f.read().splitlines()
print(host)
data = []
for device in host:
url = f'http://nunya.com/device/{device}.nunya.com/config'
urllib3.disable_warnings()
request = requests.get(url).text
if 'event manager applet' in request and 'pager' not in request:
device_platform = 'cisco_ios'
elif 'junos' in request:
device_platform = 'juniper'
elif 'pager' in request:
device_platform = 'cisco_asa'
else:
device_platform = 'broadcom_icos'
data.append({'hostname': device, 'device_platform': device_platform})
print(f'hostname: {device}, device_platform: {device_platform}')
print(data)正如您所看到的,我正在启动一个空的list,方法是data=[],在循环中,您可以看到我正在将dictionaries与所需的数据附加到行data.append({'hostname': device, 'device_platform': device_platform})中的列表中。
希望这对你有用。
https://stackoverflow.com/questions/71737621
复制相似问题