Я пишу это, потратив некоторое время на поиски на доступных интернет-ресурсах. У меня есть простая программа, которая использует ssh в маршрутизаторе Cisco для внесения изменений в конфигурацию. Всякий раз, когда я запускаю свою программу, я вижу, что cisco cli (терминал) говорит о недопустимой команде, потому что в мою команду вставлен какой-то символ.
cisco-nexus(config)# username edwin password THISisWHERIAMtypingPWD<0x08>NG
% Invalid command at '^' marker.
cisco-nexus(config)#
в то время как команда, которую я отправляю, содержит только следующий текст:
username edwin password THISisWHERIAMtypingPWDNG
Понятия не имею, как paramiko вставляет этот случайный код <0x08>.
завершенный код находится здесь:
import paramiko
import time
import re
class ssh:
def __init__(self, ip, user, pwd):
self.ip = ip
self.user = user
self.pwd = pwd
def device_conn(self):
remote_con = paramiko.SSHClient()
remote_con.set_missing_host_key_policy(paramiko.AutoAddPolicy())
remote_con.connect(hostname=self.ip, username=self.user, password=self.pwd, look_for_keys=False, allow_agent=False)
remote_ses = remote_con.invoke_shell()
output = remote_ses.recv(1000)
time.sleep(1)
remote_ses.send("conf t"+"\n")
time.sleep(0.5)
remote_ses.send("username edwin password THISisWHERIAMtypingPWDNG"+"\n")
time.sleep(0.5)
output = remote_ses.recv(10000)
print output
with open("device.txt","rb") as dev:
for fw in dev:
print fw.strip()
ob = ssh(fw.strip(), "user", "pwd")
output = ob.device_conn()
Да, я пробовал, но это не помогло.






Вы пытались удалить строку в своем коде и набрать ее с нуля? На всякий случай, если он действительно содержит символ «backspace», а ваш редактор кода его не показывает.