equipo de red de patrulla python3 paramiko

equipo de red de patrulla python3 paramiko

Operación y Mantenimiento YouthO & M Youth

Equipo de red de inspección

Usé paramiko para inspeccionar el equipo de red y encontré un gran agujero. Es la ejecución del programa la que ve que la segunda página no se puede mostrar si hay varias páginas en la configuración. No puedo encontrar el lugar donde paramiko pasa la página Agregar varios espacios no es muy útil.

equipo de red de patrulla python3 paramiko

  • Evite este hoyo e inicie sesión automáticamente para que se transmitan los siguientes comandos. Es un asunto trivial. Consulte el segundo guión como referencia.

cisco的全页打印显示配置信息的命令:

terminal length 0
show run

华为和H3C的全页打印显示配置信息的命令:

user-interface vty 0 4
screen-length 0
display current-configuration
  • Pase la contraseña del modo global directamente en el comando.

#!/usr/bin/python3
# -*- coding:utf-8 -*-

import paramiko
import time

def main(host, username, password, commands):
    client = paramiko.SSHClient()
    client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    client.connect(host, username=username, password=password,
                   port=22, allow_agent=False, look_for_keys=False)
    channel = client.invoke_shell()  # 请求交互式Shell会话
    for command in commands:
        channel.send(command + "\n")  # 发送指令
        while not channel.recv_ready():  # 等待数据到达
            time.sleep(1)
        output = channel.recv(40960)  # 从通道接收数据 nbytes(int)–读取的最大字节数
        print(output.decode())
    client.close()

if __name__ == '__main__':
    host = '192.168.208.131'
    username = 'root'
    password = 'root.123'
    commands = ['enable', 'cisco', 'terminal length 0','show run', 'show ip int br', 'exit']  #全页打印terminal length 0
    main(host, username, password, commands)
  • Agregar algunos espacios más todavía no resolvió el problema de pasar la página, el primero fue escrito con pexpect, lo que puede evitar este hoyo, pero la flexibilidad es demasiado baja. Cuando se cambia la clave pública ssh, no se puede conectar. Cada fabricante tiene que reescribirla ...

#!/usr/bin/python
#-*- coding:utf-8 -*-

import pexpect
import sys
import time

def main(host,username,password,enable,commands):
    # host = '192.168.208.131'
    # username = 'root'
    # password = 'root.123'
    # enable = 'cisco'
    # commands = [ show processes memory ]
    commands = str(commands).split(';')
    child = pexpect.spawnu('ssh %s@%s' % (username,host))
    child.logfile = sys.stdout
    login = child.expect(['yes/no', '[P|p]assword:', pexpect.EOF, pexpect.TIMEOUT])
    if login == 0:
        child.sendline('yes')
        child.expect('[P|p]assword:')
        child.sendline('%s' % password)
    elif login == 1:
        child.sendline('%s' % password)
    child.expect('\>')
    child.sendline('enable')
    child.expect('[P|p]assword:')
    child.sendline('%s' % enable)
    for command in commands:
        child.expect('\#')
        child.sendline('%s' % command)
        index = child.expect(['--More--','\#'])
        if index == 0:
            for i in range(5):
                child.send(' ')
                time.sleep(1)
            #child.sendline(' ')
        child.sendline('')
        #time.sleep(2)
    child.expect('\#')
    child.sendline('exit')
    child.close()

if __name__ == '__main__':
    host = sys.argv[1]
    username = sys.argv[2]
    password = sys.argv[3]
    enable = sys.argv[4]
    commands = sys.argv[5]
    main(host,username,password,enable,commands)

Supongo que te gusta

Origin blog.51cto.com/15082392/2656367
Recomendado
Clasificación