Форум сайта python.su
0
Всем привет!
Может быть кто-то поможет мне решить проблему. В настоящий момент я подключаюсь по ssh на удаленную машину и с нее подключаюсь по ssh к объекту, который на ней работает и далее выполняю специфические для него команды.
Выглядит это примерно вот так
ssh -i filename username_1@hostname1 ssh -l username_2 localhost -p 5555 >>> My command
#!/usr/bin/env python # -*- coding: utf-8 -*- import paramiko as ssh class SSHTool(): def __init__(self, host, user, auth, via=None, via_user=None, via_key=None): if via: t0 = ssh.Transport(via) t0.start_client() t0.auth_publickey(via_user, via_key) channel = t0.open_channel('direct-tcpip', host, ('127.0.0.1', 1234)) 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 += ch.recv(1024) return (buf, retcode) host = ('localhost', 5555) via_host = ('hostname1', 22) pk = ssh.RSAKey.from_private_key(open('./filename')) ssht = SSHTool(host, 'username_2', 'password', via=via_host, via_user='username_1', via_key=pk) print ssht.run('My command')
No handlers could be found for logger "paramiko.transport" Traceback (most recent call last): File "C:\Users\kirill.anisimov\Documents\Corda\sshish\ssh_tool.py", line 33, i n <module> ssht = SSHTool(host, 'user', 'password', via=via_host, via_user='kanisimov', via_key=pk) File "C:\Users\kirill.anisimov\Documents\Corda\sshish\ssh_tool.py", line 12, i n __init__ channel = t0.open_channel('direct-tcpip', host, ('127.0.0.1', 1234)) File "C:\Python27\lib\site-packages\paramiko\transport.py", line 1017, in open _channel raise e paramiko.ssh_exception.ChannelException: ChannelException(1, 'Administratively p rohibited')
Отредактировано Kirill_Anisimov_+1 (Сен. 2, 2019 18:40:16)
Офлайн
221
первый вариант самый простой - раз вы уже знаете как работать через утилиту ssh, то может и стоит вызывать ее из питона через subprocess? Есть ли действительно необходимость через это средствами питона?
Офлайн
0
JOHN_16Спасибо! Посмотрю, попробую.
первый вариант самый простой - раз вы уже знаете как работать через утилиту ssh, то может и стоит вызывать ее из питона через subprocess?
JOHN_16Много команд приходится выполнять руками. Муторно, надоедает)
Есть ли действительно необходимость через это средствами питона?
Офлайн
221
ну так для этого же не обязательно Python использовать. Если у вас там unix подобное можно shell скрипты сделать.
Офлайн