Резервное копирование конфигурации роутера с использованием Python
Я использую Python и Paramiko. Я пытаюсь сделать резервную копию маршрутизатора сетевого устройства с помощью Python. Ниже мой сценарий. Однако я получаю ошибку
import paramiko
import sys
import time
HOST = "10.11.214.143"
USER = "admin"
PASS = "passwd"
client1=paramiko.SSHClient()
client1.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client1.connect(HOST,username=USER,password=PASS)
print "SSH connection to %s established" %HOST
#copying config to tftp
stdin, stdout, stderr = client1.exec_command('copy nvram:startup-config tftp: 10.11.214.144')
print stdout.read()
Traceback (most recent call last):
File "<pyshell#12>", line 1, in <module>
client1.exec_command('copy nvram:startup-config tftp:')
File "C:\Python27\lib\site-packages\paramiko\client.py", line 436, in exec_command
chan = self._transport.open_session(timeout=timeout)
File "C:\Python27\lib\site-packages\paramiko\transport.py", line 716, in open_session
timeout=timeout)
File "C:\Python27\lib\site-packages\paramiko\transport.py", line 800, in open_channel
raise SSHException('SSH session not active')
SSHException: SSH session not active
1 ответ
Вы можете попробовать следующий подход; Я видел сбой exec_command() на некоторых маршрутизаторах, но не могу гарантировать, что он подходит вашей проблеме:
import paramiko
import sys
import time
HOST = "10.11.214.143"
USER = "admin"
PASS = "passwd"
client1=paramiko.SSHClient()
client1.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client1.connect(HOST,username=USER,password=PASS)
print "SSH connection to %s established" %HOST
console = client1.invoke_shell()
console.recv(65535)
console.send("copy nvram:startup-config tftp: 10.11.214.144\n")
# Adjust sleep as it's needed by your command
time.sleep(.5)
console.recv(65535)
# Eventually quit gracefully with the right command
console.send("quit\n")
time.sleep(.5)
client1.close()