es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

CISCO IOS-XR, Python3.7, No se puede ejecutar comandos como ‘ls’ y ‘df’ en el router de Cisco.

Router Cisco ios-xr usando CLI:
RP/0/RP0#show version

Thu Nov 25 07:53:59.103 UTC

Cisco IOS XR Software, Version 6.5.32.11I

Copyright (c) 2013-2020 by Cisco Systems, Inc.

RP/0/RP0#run

Thu Nov 25 07:54:05.231 UTC

[xr-vmnode0RP0_CPU0:~]$ df

Filesystem 1K-blocks Used Available Use% Mounted on

rootfs 3966080 1332040 2412860 36% /

7689211848320 43% /mnt/ecu/vdd

[xr-vmnode0RP0_CPU0:~]$

Usando python:

Soy capaz de ejecutar comandos show mediante Connecthandler.send.command:

from netmiko import ConnectHandler

import subprocess

Network_Device = {“host”: “10.111.22.333”, “username”: “USER123”, “password”: “Pass123”, “device_type”: “cisco_xr”,}

Connect = ConnectHandler(**Network_Device)

Connect.enable()

version1 = “show version”

print(Connect.send_command(version1))

Pero no puedo ejecutar comandos ‘df’ o ‘ls’, ya que no puedo alcanzar el indicador de bash al que llego al ejecutar el comando ‘run’ en el router.

He intentado:

disk1files = subprocess.run(“df”, stdout=subprocess.PIPE)

print(disk1files.stdout.decode())

Pero parece que está mal. Por favor, sugiera la biblioteca o el código adecuado que pueda usar aquí.

Esta es mi primera pregunta aquí, así que tenga en cuenta algunas preguntas o errores tontos en el código.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Ya que no puedes alcanzar el prompt de bash ejecutando el comando “run” en el router, significa que no puedes ejecutar comandos de shell de Linux como “df” o “ls” usando la librería netmiko.

    Sin embargo, hay una librería llamada “paramiko” que puede ser usada para ejecutar comandos de shell en un dispositivo remoto, incluso si no soporta SSH nativamente. Aquí hay un ejemplo de cómo utilizar la librería paramiko para ejecutar el comando “df” en un router Cisco IOS XR:

    import paramiko
    
    ssh = paramiko.SSHClient()
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    
    hostname = '10.111.22.333'
    username = 'USER123'
    password = 'Pass123'
    command = 'df'
    
    ssh.connect(hostname, username=username, password=password)
    stdin, stdout, stderr = ssh.exec_command(command)
    
    output = stdout.readlines()
    print(output)
    
    ssh.close()
    

    Esto debería imprimir la salida del comando “df” en el router Cisco IOS XR.

Comments are closed.