在此之前,我采用下面的方法来为每个命令保存专用文件,但是当要使用越来越多的命令并且每次都必须修改此代码时,这将很麻烦。
if device['device_type'] == "cisco_ios" :
file=open('show_version' + '-' + device['ip']+".txt","a")
file.write(connection.send_command('show version'))
file.close()
file=open('show_arp' + '-' + device['ip']+".txt","a")
file.write(connection.send_command('show arp'))
file.close()
当要使用更多命令时,上述方法不再有效。因此,.i我想在文本文件中创建命令列表,然后发送从文件中读取的命令,并将每个命令行的每个输出(commands.txt)分离到它自己的文件,具有唯一的名称(命令名作为文件名)。我修改了下面的代码,但将所有命令输出保存到单个文件中。
下面的代码在单个文件中生成所有输出,但仍然无法将其变成多个文件。
with open("commands.txt") as cmd_file:
commands = cmd_file.readlines()
for device in devices['device']:
try:
print('Connecting to device:', device['ip'])
connection = netmiko.ConnectHandler(**device)
if device['device_type'] == "cisco_ios" :
filename = connection.base_prompt + '-' + device['ip'] + '.txt'
with open(filename, 'w') as out_file:
for command in commands:
out_file.write(connection.send_command(command))
connection.disconnect()
except netmiko_exceptions as e:
print('Failed to ', device['ip'], e)
commands.txt文件中包含cisco命令的内容 显示版本, 显示界面 炫酷
在这种情况下,最终将生成3个文件,分别是showversion.txt,showinterface.txt和showchassic.txt。
请进一步告知我。谢谢。