Paramiko повторно использует сеанс или открывает новый для каждого вызова exec_command? - PullRequest
1 голос
/ 21 июня 2019

У меня есть несколько устройств, которые мне нужно проверить. Для этого мне нужно выполнить команды через SSH. Я использую Python и Paramiko. Здесь вопрос. Каждый раз, когда я запускаю команду через SSH, Paramiko открывает новый сеанс SSH и создает новый процесс или сохраняет его открытым, пока я не закрою его? Это важно, потому что мне придется выполнить тысячи тестов. Открытие нового сеанса каждый раз займет несколько дополнительных секунд. Если я смогу сэкономить это время за тысячи тестов, я смогу сэкономить много времени

Если сеанс не остается открытым, как мне сохранить его открытым, чтобы я мог выполнять команды без входа в систему каждый раз, возможно ли это? Если это невозможно с Paramiko, могу ли я сделать это с другими модулями?

Я нашел это , но все они кажутся либо обертками вокруг Парамико, либо они устарели.

Это пример команды, которую я пытаюсь выполнить:

hostname = '192.168.3.4'    
port = 22
username = 'username'
password = 'mypassword'
s = paramiko.SSHClient()
s.load_system_host_keys()
s.connect(hostname, port, username, password)
command = 'ls -lah'
(stdin, stdout, stderr) = s.exec_command(command)
(stdin, stdout, stderr) = s.exec_command(command)
(stdin, stdout, stderr) = s.exec_command(command)
(stdin, stdout, stderr) = s.exec_command(command)

1 Ответ

0 голосов
/ 21 июня 2019

Это зависит от того, какую часть кода вы повторяете для каждой команды.


Если вы повторяете только вызов SSHClient.exec_command, вы все еще используете то же соединение.

Для внутренних органов exec_command, см. Мой ответ на:
В чем разница между exec_command и send с invoke_shell () в Paramiko?


Если вы повторяете весь свой код, включая SSHClient.connect, вы, очевидно, заходите снова каждый раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...