2017-04-02 4 views
1

Ich bin neu und ich konnte keine vollständige Antwort auf meine Frage finden. Also frage ich es hier. Ich benutze Python und das Pexpect-Modul, um eine Verbindung zu einem SSH-Server herzustellen und ein paar Befehle auszuführen. Einige Befehle funktionieren jedoch nicht. Ich schaute auf die Dokumentation und das sehe ich einen Befehl wie Laufen:Python-Modul pexpect - wie eine Verbindung zu SSH-Server und dann Bash-Befehle ausführen

ls -l | grep -i <Filter>

Weil ich den Laich-Befehl zu verwenden, haben die Bash-Skript mit einem

child = pexpect.spawn('/bin/bash -c "ls -l | grep LOG > logs.txt"')

jedoch laufen, Die Art, wie ich eine Verbindung zum Server herstelle, besteht darin, einen Befehl ssh mit einem Schlüssel zu senden:

p = pexpect.spawn("ssh -t -t [email protected] -i ~/.ssh/Keyfile ")

Also kann ich nicht den Spawn-Befehl mit dem Bash-Befehl innerhalb es ausführen (oder kann ich?)

Die Antwort sollte eine Passwort-Anfrage sein, weil es mich auf eine andere Maschine umleiten.

Wie verwende ich den Spawn-Befehl, damit ich mit dem Schlüssel eine Verbindung zum Server herstellen kann, geben Sie das Kennwort für den umgeleiteten Computer ein und führen Sie dann einen Bash-Befehl aus.

Hinweis: Ich versuche, den bash Teil herauszufinden. Die Verbindung zum Server und die Umleitung + Passworteinfügung funktionieren bereits für mich.

Antwort

1

Sie können den Befehl in der nächsten Zeile an:

ssh = pexpect.spawn('ssh -t -t [email protected] -i ~/.ssh/Keyfile') 
#You may write expect here to check if the ask if for password or some other error or the initial banner message 
ssh.sendline('password') 
#You may check if the password is successful 
ssh.sendline('/bin/bash -c "ls -l | grep LOG > logs.txt"'); 
+0

Dank, ich weiß, warum nicht zu mir kommen :) Auch hat diese offensichtliche Lösung nicht beachten Sie, dass ich auch diese auf einem Android-Gerät versucht, wo es no/bin/bash aber eher bin/sh ich musste angeben, dass bin System gefunden wurde, also wäre das Ergebnis ** ssh.sendline ('system/bin/sh -c' ls -l | grep LOG> logs.txt "'); ** wenn jemand interessiert ist – Steven

Verwandte Themen