Аналогично заданному здесь вопросу: SSH и telnet к localhost с использованием python
Я пытаюсь найти решение следующей проблемы:
С сервераA (полные права) через Jumhost B (без sudo), я хочу подключиться к нескольким сетевым устройствам с помощью Python (достаточно одного за другим, это не обязательно должно происходить одновременно).Только с SSH это не будет проблемой, но многие устройства используют только Telnet (я знаю, что это небезопасно, но я так не решил)
После исследования я пришелв нескольких решениях для цепных соединений SSH, таких как Paramiko, Netmiko, Pxssh и т. д. Но я не могу найти подходящий способ для достижения последнего шага с Telnet.В настоящее время у меня есть следующий код:
class SSHTool():
def __init__(self, host, user, auth,
via=None, via_user=None, via_auth=None):
if via:
t0 = ssh.Transport(via)
t0.start_client()
t0.auth_password(via_user, via_auth)
# setup forwarding from 127.0.0.1:<free_random_port> to |host|
channel = t0.open_channel('direct-tcpip', host, ('127.0.0.1', 0))
self.transport = ssh.Transport(channel)
else:
self.transport = ssh.Transport(host)
self.transport.start_client()
self.transport.auth_password(user, auth)
def run(self, cmd):
ch = self.transport.open_session()
ch.set_combine_stderr(True)
ch.exec_command(cmd)
retcode = ch.recv_exit_status()
buf = ''
while ch.recv_ready():
buf += str(ch.recv(1024))
return (buf, retcode)
host = ('192.168.0.136', 22)
via_host = ('192.168.0.213', 22)
ssht = SSHTool(host, '', '',
via=via_host, via_user='', via_auth='')
output=ssht.run('ls')
print(output)
Благодаря этому я могу соединиться через свой Jumphost, но я не знаю, как реализовать соединение Telnet.Кто-нибудь знает правильное решение?