创建每个netmiko发送命令的专用文件输出(文本文件中的命令)

时间:2019-03-22 01:01:46

标签: python file text

在此之前,我采用下面的方法来为每个命令保存专用文件,但是当要使用越来越多的命令并且每次都必须修改此代码时,这将很麻烦。

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。

请进一步告知我。谢谢。

0 个答案:

没有答案