python paramiko ssh

я новичок в python. я написал скрипт для подключения к хосту и выполнения одной команды

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(host, username=user, password=pw)

print 'running remote command'

stdin, stdout, stderr = ssh.exec_command(command)
stdin.close()

for line in stdout.read().splitlines():
    print '%s$: %s' % (host, line)
    if outfile != None:
        f_outfile.write("%s\n" %line)

for line in stderr.read().splitlines():
    print '%s$: %s' % (host, line + "\n")
    if outfile != None:
        f_outfile.write("%s\n" %line)

ssh.close()

if outfile != None:
    f_outfile.close()

print 'connection to %s closed' %host

except:
   e = sys.exc_info()[1]
   print '%s' %e

работает нормально, когда удаленной команде не нужен tty. я нашел пример invoke_shell Вложенный сеанс SSH с Paramiko . Я не доволен этим решением, потому что, если сервер имеет подсказку, которая не указана в моем сценарии -> бесконечный цикл или указанный подсказка в сценарии - это строка в возвращаемом тексте -> не все данные будут получены. Может быть, есть лучшее решение, где stdout и stderr отправляются обратно, как в моем сценарии?

16
задан Community 23 May 2017 в 12:26
поделиться