#subprocess #cisco #cisco-ios #netmiko
Вопрос:
Маршрутизатор Cisco ios-xr с использованием интерфейса командной строки:
RP/0/RP0#показать версию
Чт 25 ноября 07:53:59.103 UTC
Программное обеспечение Cisco IOS XR, версия 6.5.32.11 I
Авторское право (c) 2013-2020 от Cisco Systems, Inc.
RP/0/RP0#запуск
Чт 25 ноября 07:54:05.231 UTC
[xr-vm_node0_RP0_CPU0:~]$df
Файловая система 1K-используемые блоки Доступны % использования, Смонтированные на
корни 3966080 1332040 2412860 36% /
76892 11848320 43% /mnt/ecu/vdd
[xr-vm_node0_RP0_CPU0:~]$
Использование python: Я могу запускать команды show с помощью 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))
Но не в состоянии выполнить команды » df » или «ls», так как не могу связаться с подсказкой bash, которую я достигаю, выполнив команду «выполнить» на маршрутизаторе.
Я пытался:
disk1files = subprocess.run("df", stdout=subprocess.PIPE) print(disk1files.stdout.decode())
Но, похоже, это неправильно. Пожалуйста, предложите правильную библиотеку или код, которые я могу использовать здесь.
Это мой первый вопрос здесь, поэтому имейте в виду некоторые глупые вопросы или ошибки, сделанные в коде
Ответ №1:
если в DF вы имеете в виду «Не фрагментировать», то можно отправить его следующим образом
Connect.send_command("ping 192.168.10.10 df-bit size 1600")
где 1600 представляет MTU, а для команд ls-команда link,
Connect.send_command("ls-active") Connect.send_command("ls-active-enabled")
но если вы имеете в виду df и ls в linux (файлы без диска и списка..), то вы можете использовать модуль ОС для отправки команд:
import os os.system("ls -l")
или используйте вызов из модуля подпроцесса:
from subprocess import call call(["ls", "-l"])
Если вам нужно загрузить cisco bash:
switch# configure terminal switch(config)# feature bash-shell switch# run? run Execute/run program run-script Run shell scripts switch# run bash? bash Linux-bash switch# run bash bash-4.2$ whoami admin bash-4.2$ pwd /bootflash/home/admin bash-4.2$