У меня есть этот код Python3, который использует Pexpect.pexpect не выполняет команду по шагам
import pexpect
import getpass
import sys
def ssh(username,password,host,port,command,writeline):
child = pexpect.spawn("ssh -p {} {}@{} '{}'".format(port,username,host,command))
child.expect("password: ")
child.sendline(password)
if(writeline):
print(child.read())
def scp(username,password,host,port,file,dest):
child = pexpect.spawn("scp -P {} {} {}@{}:{}".format(port,file,username,host,dest))
child.expect("password: ")
child.sendline(password)
try:
filename = sys.argv[1]
print("=== sendhw remote commander ===")
username = input("Username: ")
password = getpass.getpass("Password: ")
ssh(username,password,"some.host.net","22","mkdir ~/srakrnSRV",False)
scp(username,password,"some.host.net","22",filename,"~/srakrnSRV")
ssh(username,password,"some.host.net","22","cd srakrnSRV && sendhw {}".format(filename),True)
except IndexError:
print("No homework name specified.")
Моя цель состоит в том, чтобы:
- SSH в хост с функцией
ssh
, создайте каталогsrakrnSRV
, то - загрузить файл в
srakrnSRV
каталог, который ранее созданного cd
вsrakrnSRV
и выполнить командуsendhw <filename>
. Переменнаяfilename
определяется параметрами командной строки и выводит результат.
После запуска всего кода, Python печатает
b'\r\nbash: line 0: cd: srakrnSRV: No such file or directory\r\n'
, не ожидается, так как каталог должен быть предварительно создан.
Кроме того, я попытался вручную создать папку srakrnSRV
на моем удаленном хосте. После повторного запуска команды появляется также, что функция scp
также не работает. Единственной операцией pexpect coomand была последняя функция ssh
.
Как его выполнить в порядке? Заранее спасибо!