美文网首页
Mastering_Python_Networking-Para

Mastering_Python_Networking-Para

作者: 薛东弗斯 | 来源:发表于2024-02-02 22:44 被阅读0次
    image.png
    image.png
    image.png
    #!/usr/bin/env python
    
    import paramiko, getpass, time
    
    devices = {'lax-edg-r1': {'ip': '192.168.2.51'},
               'lax-edg-r2': {'ip': '192.168.2.52'}}
    commands = ['show version\n', 'show run\n']
    
    username = input('Username: ')
    password = getpass.getpass('Password: ')
    
    max_buffer = 65535
    
    def clear_buffer(connection):
        if connection.recv_ready():
            return connection.recv(max_buffer)
    
    # Starts the loop for devices
    for device in devices.keys():
        outputFileName = device + '_output.txt'
        connection = paramiko.SSHClient()
        connection.set_missing_host_key_policy(paramiko.AutoAddPolicy())
        connection.connect(devices[device]['ip'], username=username, password=password, look_for_keys=False, allow_agent=False)
        new_connection = connection.invoke_shell()
        output = clear_buffer(new_connection)
        time.sleep(5)
        new_connection.send("terminal length 0\n")
        output = clear_buffer(new_connection)
        with open(outputFileName, 'wb') as f:
            for command in commands:
                new_connection.send(command)
                time.sleep(5)
                output = new_connection.recv(max_buffer)
                print(output)
                f.write(output)
    
        new_connection.close()
    
    
    #!/usr/bin/env python
    
    import paramiko, getpass, time, json
    
    with open('devices.json', 'r') as f:
        devices = json.load(f)
    
    with open('commands.txt', 'r') as f:
        commands = f.readlines()
    
    username = input('Username: ')
    password = getpass.getpass('Password: ')
    
    max_buffer = 65535
    
    def clear_buffer(connection):
        if connection.recv_ready():
            return connection.recv(max_buffer)
    
    # Starts the loop for devices
    for device in devices.keys():
        outputFileName = device + '_output.txt'
        connection = paramiko.SSHClient()
        connection.set_missing_host_key_policy(paramiko.AutoAddPolicy())
        connection.connect(devices[device]['ip'], username=username, password=password, look_for_keys=False, allow_agent=False)
        new_connection = connection.invoke_shell()
        output = clear_buffer(new_connection)
        time.sleep(2)
        new_connection.send("terminal length 0\n")
        output = clear_buffer(new_connection)
        with open(outputFileName, 'wb') as f:
            for command in commands:
                new_connection.send(command)
                time.sleep(2)
                output = new_connection.recv(max_buffer)
                print(output)
                f.write(output)
    
        new_connection.close()
    
    

    相关文章

      网友评论

          本文标题:Mastering_Python_Networking-Para

          本文链接:https://www.haomeiwen.com/subject/vubtadtx.html