Ich habe diesen Python3-Code, der Pexpect verwenden.pexpect nicht ausführen Befehl durch Schritte
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.")
Mein Ziel ist:
- SSH in den Wirt mit der
ssh
Funktion, erstellen Sie das VerzeichnissrakrnSRV
, dann - eine Datei in das
srakrnSRV
Verzeichnis laden, die zuvor erstellt
cd
insrakrnSRV
, und führen Sie densendhw <filename>
Befehl aus. Diefilename
Variable wird von Befehlszeilenparametern definiert und das Ergebnis ausgegeben.
Nach dem gesamten Code ausgeführt wird, druckt Python aus
b'\r\nbash: line 0: cd: srakrnSRV: No such file or directory\r\n'
, das nicht zu erwarten, da das Verzeichnis sollte vorher erstellt werden.
Ich habe auch versucht, manuell erstellen srakrnSRV
Ordner in meinem Remote-Host. Nach dem Ausführen des Befehls scheint es, dass scp
Funktion auch nicht ausgeführt wird. Der einzige laufende Pexpect Coomand war die letzte ssh
Funktion.
Wie es in der Reihenfolge ausführen? Danke im Voraus!