我从设备上获得了输出,并且输出存储在下面的变量列表中
output = ['Gig 5/1', 'Gig 5/37', 'Gig 6/37', 'Gig 5/7', 'Gig 6/3', 'Gig 5/3']
同样,我需要通过从输出中选择索引来在同一设备上运行不同的命令。
command = 'show interface '+output[0]
如果输入索引值,则会得到输出。对于某些设备,输出索引计数不断变化。需要执行命令而不提及确切的索引,并且还需要在所有索引执行后中断。最后,结果要么需要存储在单个变量中,要么每执行一条命令就需要将结果存储在新变量中。
答案 0 :(得分:0)
这是一个使用迭代和子流程来完成工作的代码示例:
import subprocess
output = ['Gig 5/1', 'Gig 5/37', 'Gig 6/37', 'Gig 5/7', 'Gig 6/3', 'Gig 5/3']
for item in output:
subprocess.call(('show', 'interface', item))
这是假设这些是系统命令。如果没有,您将不得不用更合适的东西代替subprocess
。
另一种方法是使用字典而不是列表:
output = {
'Gig 5/1': None,
'Gig 5/37': None,
'Gig 6/37': None,
'Gig 5/7': None,
'Gig 6/3': None,
'Gig 5/3': None,
}
for key in output:
output[key] = do_something_with(key)
输出如下:
{
'Gig 5/1': "result for Gig 5/1",
'Gig 5/37': "result for Gig 5/37",
}
或者您可以按以下方式访问它:
for interface, value in output.items():
print(interface, value)