2017-05-27 8 views
2

Ich versuche, Dateien von meinem Webserver zu ziehen und möchte dies mit Python tun. Ich habe den Befehl darunter, um die Dateien auf dem entfernten Rechner zu übertragen und sie alle auf den lokalen Rechner zurück zu ziehen. Ich mache das manuell mit os.system und es fordert mich zum Passwort auf. Ich gebe es ein und es zieht die Dateien. Gibt es trotzdem eine Passwortabfrage von os.system oder wenn ich pexpect benutze, erkenne ich die Passwortabfrage und gebe sie ein, aber die Dateien werden nicht kopiert. Irgendwelche Ideen?Execute tar-Befehl embeded in ssh-Befehl

ssh [email protected] 'tar -cvf - -C /usr/home/user1 .' | tar -xvf - 

username = "user1" 
servername = "myserver" 
mypath = "/usr/home/user1" 
import os 
os.system("ssh [email protected] 'tar -cvf - -C /usr/home/user1 .' | tar -xvf -") 
[email protected]'s password: 
+1

bewahren Warum nicht Gebrauch scp verwenden? – 3141

Antwort

0

sollten Sie in der Lage sein, Ihre ssh zu konfigurieren, ohne zu fragen für Passwort, siehe zum Beispiel verbinden:

scp -rp sourcedirectory [email protected]:/path 
: http://web.archive.org/web/20160404025901/http://jaybyjayfresh.com/2009/02/04/logging-in-without-a-password-certificates-ssh/

Hinweis, Sie auch scp kopieren Sie den gesamten Ordner rekursiv verwenden können

-r bedeutet rekursiv -p Mittel Attribute

+0

Leider kann ich auf diesen Servern keine Zertifikate verwenden. Ich kann auch scp verwenden, aber die Art, wie scp funktioniert, öffnet eine Sitzung für jede Datei und dauert viel länger, um Hunderte von Dateien zu kopieren, anstatt nur eine TAR-Datei mit einer Sitzung in einem Befehl zu kopieren. –