我无法在以下IF条件下打印IP
def call_openNMS_service(node):
#print node
url = "http://localhost:8980/opennms/rest/nodes/{}/ipinterfaces/{}/services"
dict_urls = [url.format(i, j) for i, j in zip(node["id"], node["ip"])]
print dict_urls
headers = {"Accept": "application/json"}
for url in dict_urls:
x = requests.get(url, headers=headers, auth=("admin", "0p35"))
parsed = json.loads(x.content)
##print json.dumps(parsed, indent=4, sort_keys=True)
for i in parsed["service"]:
#print i["serviceType"]["name"]
if i["serviceType"]["name"] == "SSH": # So if i find SSH i print the node[ip]
print node["ip"] ## this is where it should just print the one IP which has SSH running
else:
print "No IP found with SSH running"
但这会打印出ip的序列,而不是特定的IP
node = {
'ip': [u'10.21.204.174', u'10.21.205.148', u'10.21.50.153', u'10.21.50.192', u'10.21.50.198', u'10.21.51.149', u'10.21.51.158', u'10.21.51.200', u'10.21.51.252', u'10.21.52.202', u'10.21.52.53', u'10.21.54.12', u'10.21.54.149', u'10.21.55.132', u'10.21.55.176', u'10.21.55.239', u'10.21.56.169', u'10.21.56.48', u'10.21.65.106', u'10.21.65.125', u'10.21.65.34', u'10.21.67.131', u'10.21.67.179', u'10.21.67.194', u'10.21.67.230', u'10.21.67.249', u'10.21.67.45', u'10.21.67.70', u'10.21.68.127', u'10.21.68.180', u'10.21.68.73', u'10.21.69.200', u'10.21.69.38', u'10.21.70.121', u'10.21.70.56'],
'id': [u'564', u'561', u'462', u'389', u'352', u'353', u'390', u'354', u'356', u'454', u'348', u'349', u'455', u'563', u'359', u'360', u'363', u'362', u'525', u'426', u'503', u'466', u'431', u'527', u'529', u'373', u'414', u'518', u'430', u'425', u'413', u'368', u'404', u'517', u'502']
}
答案 0 :(得分:3)
正如所写,for
循环中唯一拥有单个IP的地方嵌入url
。看起来你最好绕过zip()
本身,而不是使用dict_urls
作为中间人。失去这两行:
dict_urls = [url.format(i,j) for i,j in zip(node['id'], node['ip'])]
print dict_urls
然后修改您的for
循环以遍历node
元素并在循环中形成您的网址:
for nodeid, nodeip in zip(node['id'], node['ip']):
nodeurl = url.format(nodeid, nodeip)
将url
中对nodeurl
的所有引用替换为url
(需要更改名称,以免覆盖print nodeip
模板)。然后,当您想要打印IP时,只需:
def call_openNMS_service(node):
url = "http://localhost:8980/opennms/rest/nodes/{}/ipinterfaces/{}/services"
headers = {"Accept": "application/json"}
for nodeid, nodeip in zip(node['id'], node['ip']):
nodeurl = url.format(nodeid, nodeip)
x = requests.get(nodeurl, headers=headers, auth=("admin", "0p35"))
parsed = json.loads(x.content)
for i in parsed["service"]:
if i["serviceType"]["name"] == "SSH":
print nodeip
else:
print "No IP found with SSH running"
以下是最终修改后的代码的外观:
net.jini.core.lookup.ServiceRegistrar