python paramiko invoke_shell recv получил странные символы - PullRequest
0 голосов
/ 25 мая 2020

Я использую paramiko для получения информации от коммутатора. Шаг manul будет следующим: 1. Войдите в коммутатор через ssh 2. выполните простую команду

вот результат:

SW10 [standalone: master] > show interfaces ethernet 1/32 status

Port                   Operational state           Speed                  Negotiation
----                   -----------------           -----                  -----------
Eth1/32                Up                          10 Gbps                No-Negotiation

Вы можете увидеть вывод только текст.

Но когда я запустил это через скрипт, я получил следующие странные символы.

import paramiko
import time

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('10.10.21.22', username='admin', password='pass')
channel = ssh.invoke_shell()
resp = channel.recv(9999)

show_interface_cmd = "show interfaces ethernet 1/21 status\r\n"
channel.send(show_interface_cmd)
resp = channel.recv(9999)
print(resp)

Вывод:

b'\rSW10 [standalone: master] > show interfaces ethernet 1/26 status\r\r\n\x1b[?1h\x1b=\r\r\nPort
            Operational state           Speed                  Negoti \x08ation              \r\n----
 -----------------           -----                  ------ \x08-----              \r\nEth1/26                Up
                  10 Gbps                No-Neg \x08otiation           \r\n\r\x1b[K\x1b[?1l\x1b>\rE2E-M9958-102Y-SW10 [standalone: master] > \r\r\n\rSW10 [standalone: master] > '

Затем, если я отправлю другую правильную команду и попытаюсь получите ответ с помощью recv, вывод будет содержать ошибку.

Мой вопрос: почему я получил такой странный вывод? И как с этим справиться правильно? Спасибо.

...