Я использую pexpect для удаленного сервера и экран передачи мне.Сценарий запускается успешно.Единственная проблема заключается в том, что выводимый на экран вид сжимается после входа в систему с использованием pexpect.это как не получить полноэкранный терминал для ввода и вывода.Эффект заключается в том, что при вводе команды это может вызвать проблемы, и некоторое содержимое не может быть полностью отображено (получить «новую строку» в середине экрана), но я уверен, что нет проблем с выводом на экран при использовании обычного входа ssh,
Я использую Iterm2 для удаленного входа, но неважно, Iterm или терминал.проблема та же.
import pexpect
import getpass, os , sys
from time import sleep
def ssh_command (user,password,servername):
ssh_newkey = 'Are you sure you want to continue connecting'
child = pexpect.spawn('ssh -l %s %s '%(user, servername))
fout = open('mylog.txt','wb')
child.logfile = fout
i = child.expect([pexpect.TIMEOUT, ssh_newkey, 'password: '],timeout =5)
if i == 0: # Timeout
print('ERROR!')
return None
if i == 1: # SSH does not have the public key. Just accept it.
child.sendline ('yes')
child.expect ('password: ')
i = child.expect([pexpect.TIMEOUT, 'password: '],timeout =5)
if i == 0: # Timeout
print('ERROR!')
return None
child.sendline(password)
child.interact()
ожидаемый вывод (как при обычном входе в систему через ssh):
Mac:user|/var $ ssh admin101
user@admin101's password:
[user@admin101 ~]$ echo "1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890"
сжатый вывод терминала (с использованием pexpect):
Mac:user|/var $ python remote.py
4567890an@admin101 ~]$ echo "1234567890 1234567890 1234567890 1234567890 123