Я хотел бы подключиться к сетевому элементу через прокси-сервер, используя модуль Python, например, Paramiko, и распечатать вывод для дальнейшей обработки данных.Я написал скрипт, основанный на некоторых онлайн-примерах, НО продолжаю получать те же ошибки.Может кто-нибудь посоветовать, как исправить ошибку?
Я пытался запустить скрипт, используя Paramiko, для непосредственного подключения ssh к другому сетевому элементу и успешно.Но в этом случае мне не разрешено напрямую подключаться по ssh к сетевому элементу.
import paramiko
import sys
import subprocess
proxy = paramiko.SSHClient()
proxy.set_missing_host_key_policy(paramiko.AutoAddPolicy())
proxy.connect('<proxy_ip>', username='<proxy_username>',
password='<proxy_password>')
transport = proxy.get_transport()
dest_addr = ('<network_element_ip>', 22) #edited#
local_addr = ('<proxy_ip>', 22) #edited#
channel = transport.open_channel("direct-tcpip", dest_addr, local_addr)
ne = paramiko.SSHClient()
ne.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ne.connect('<network_element_ip>', username='<network_element_username>',
password='<network_element_password>', sock=channel)
stdin, stdout, stderr = ne.exec_command("show time\n") #edited#
print(stdout.read())
proxy.close()
ne.close()
Я ожидаю, что скрипт вернет вывод, отвечающий на команду send, но я продолжаю получать сообщение об ошибке ниже:
Файл "ssh_metro.py", строка 18, в stdin, stdout, stderr = ne.exec_command ("show time \ n") # отредактированный # файл "/root/anaconda3/lib/python3.7/site-packages/paramiko / client.py ", строка 499, в файле exec_command chan.exec_command (команда) Файл" /root/anaconda3/lib/python3.7/site-packages/paramiko/channel.py ", строка 72, в функции _check return func (self, * args, ** kwds) Файл "/root/anaconda3/lib/python3.7/site-packages/paramiko/channel.py", строка 257, в файле exec_command self._wait_for_event () "/ root / anaconda3 /lib / python3.7 / site-packages / paramiko / channel.py ", строка 1208, в _wait_for_event повысить файл" /root/anaconda3/lib/python3.7/site-packages/paramiko/transport.py ", строка 1982, в прогоне ptype, m = self.packetizer.read_message () Файл "/root/anaconda3/lib/python3.7/site-packages/paramiko/packet.py", строка 441, в заголовке read_message = self.read_all (self .__ block_size_in, check_rekey = True) Файл "/root/anaconda3/lib/python3.7/site-packages/paramiko/packet.py", строка 290, в read_all вызывает EOFError ()EOFError