Я работаю над скриптом (python 2.7), который работает с удаленным устройством под управлением Cisco IOS, поэтому мне нужно выполнить множество команд через ssh , Несколько команд не имеют выхода, а некоторые из них имеют, и я хочу получить результат. Это звучит примерно так:Парамико сеанса, но мне нужно выполнить много команд
import paramiko
ssh=paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(self._ip, port=22, username=username, password=password
stdin, stdout, stderr = ssh.exec_command('command with no output')
stdin, stdout, stderr = ssh.exec_command('command with no output')
stdin, stdout, stderr = ssh.exec_command('command with output')
sh_ver = stdout.readlines()
Дело в том, exec_command
это приводит к тому, канал закрывается и он не может быть использован повторно, но это не возможно для меня, чтобы открыть новый канал для того, чтобы выполнить другую команду, потому что это сеанс команд, которые в конце концов мне нужно получить вывод.
Я попытался выполнить команды этот путь, а также:
stdin, stdout, stderr = ssh.exec_command('''
command
command
command
''')
output = stdout.readlines()
, но этот путь, output
пуст. И даже если это не так, мне нужно выполнить несколько проверок на output
, а затем продолжить сеанс, где я остановился.
Так что мне нужно? Способ управления этим ssh-соединением, не закрывая его или не запуская новый, и легко получить результат из команды.
Заранее спасибо, Мири. :)
О, ладно .. но, как я уже сказал, можно ли проверить выход, а затем продолжить в том же сеансе таким образом? –
@MiriAdj: Я знаю, что вы сказали: 'exec_command()' может использоваться только один раз за сеанс, но я не думаю, что это правда. Ваша точка зрения, что вы хотите «продолжить» одну цепочку команд? Это действительно помогло бы, если бы вы были более конкретными в отношении команд. –
Да, это цепочка команд. Команды для устройства cisco, поэтому это некоторые настройки, а затем я получаю вывод. –