Я намереваюсь запускать несколько команд на удаленном хостинге с помощью paramiko, но сеанс ssh закрывается после запуска команды.
Код перечислены ниже:Как сохранить сессию ssh не истек с помощью paramiko?
from paramiko import SSHClient
import paramiko
ssh = SSHClient()
ssh.load_system_host_keys()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(host, 22, user, passwd, timeout=3)
stdin, stdout, stderr = ssh.exec_command('uname -a')
Так есть ли способ остановить SSH сессию закрытия? Или любые альтернативы парамико?
Update:
Я был в состоянии держать вызов exec_command
на моем Macbook при подключении к серверу Linux, но SSH сессия закрывается автоматически после того, как exec_command
один раз на сервере Linux при подключении к переключателю и подняла ставку
SSHException: paramiko.ssh_exception.SSHException: SSH session not active
>>> print ssh.get_transport()
>>> <paramiko.Transport at 0xf00216d0L (unconnected)>
>>> print ssh.get_transport().is_active()
>>> False
>>> print ssh.get_transport().is_authenticated()
>>> False
есть ли способ сохранить paramiko сеанс SSH активен все время?
paramiko отладочная информация режим возвращается следующим образом:
начиная нить (режим клиента): 0x2657e10L
Connected (версия 1.99, клиент Comware-5.20)
Kex Algos: [u'diffie-Хеллмана -group-exchange-sha1 ', u'diffie-hellman- group14-sha1', u'diffie-hellman-group1-sha1 '] ключ сервера: [u'ssh-rsa'] клиент шифрует: [u'aes128-cbc ', u'3des-cbc', u'des-cbc '] server encrypt: [u'aes128-cbc', u'3des-cbc ', u'des-cbc'] клиент mac: [u'hmac-sha1 ', u'hmac-sha1-96', u'hmac-md5 ', u'hmac-md5-96'] сервер mac: [u'hmac-sha1 ', u'hmac-sha1-96', u'hmac -md5 ', u'hmac-md5-96'] клиентский компресс: [u'none '] сжимать сервер: [ u'none '] client lang: [u' '] server lang: [u' '] kex следует? False
Шифры согласованы: local = aes128-cbc, remote = aes128-cbc
Использование kex diffie-hellman-group14 -sha1; тип ключа сервера ssh-rsa; шифр: локальный aes128-cbc, удаленный aes128-cbc; mac: локальный hmac-sha1, удаленный hmac-sha1; компрессия: местный нет, удаленный нет
Переключиться на новые ключи ...
userauth в порядке
Аутентификация (пароль) успешно!
[чан 0] Макс пакета в: 32768 байтов
[чан 1] Макс пакета в: 32768 байтов
[чан 0] Макс пакетов из: 32496 байтов
Secsh канал 0 открыт.
Secsh канал 2 Не удалось открыть:
дефицит ресурсов: нехватка ресурсов
[чан 0] канал СЭЩ 0 запрос нормально
[чан 0] EOF послал (0)
Есть ли еще сценарий, чем этот? Вы должны иметь возможность продолжать вызов 'exec_command'. – tdelaney
Привет? Вы выполняете несколько команд в скрипте или запускаете несколько скриптов с одной командой? – tdelaney
Мне удалось сохранить вызов 'exec_command' на моем Macbook, но он не работал на сервере Linux и поднял' SSHException: paramiko.ssh_exception.SSHException: сеанс SSH неактивен. Версия Python на Mac - 2,7.11, но на Сервер Linux - 2.6.6. @tdelaney –