2016-07-21 19 views
0

Ich habe einen Django-Server, und ich muss einige Daten über scp hochladen. Ich habe diese Ansicht:Erfassen der Ausgabe von scp aus Python

pathFile = '/home/user1/foo.json' 
user = 'user1scp' 
server = 'someserver.com' 
pathServer = '/var/www/foo.json' 

os.system("scp %s %[email protected]%s:%s" % (pathFile, user, server, pathServer)) 

Auf der Konsole Fenster, in dem die Seite ausgeführt wird (dh, wenn ich den Befehl ‚runserver‘ genannt) Ich habe diese Ausgabe angezeigt:

[21/Jul/2016 18:55:12] "GET /someurl/upload HTTP/1.1" 301 0 
foo.json           100% 609  0.6KB/s 00:00 

Ich möchte in der Lage sein, Um diese Ausgabe zu manipulieren, kann ich den Benutzer darüber informieren, dass alle Dateien (mehrere Dateien zum Hochladen) korrekt hochgeladen wurden oder nicht.

Ich versuchte die Lösung in dieser Antwort How to capture stdout output from a Python function call?, aber es hat nicht funktioniert. Ich habe versucht, Popen und Subprozess und hatte auch keine Ergebnisse. Vielleicht mache ich etwas falsch?

Antwort

1

Dies beantwortet nicht direkt Ihre Frage, aber ich werde nicht den rohen scp Befehl in Python tun, weil die Ausgabe schwer zu analysieren ist, selbst wenn Sie es haben. Sie sollten Tools wie fabric verwenden, um damit umzugehen. Es ist Python und Sie haben die volle Kontrolle über den Eingang/Ausgang. Die gleiche Operation wie scp ist put. Für ein Beispiel können Sie dies überprüfen SO answer.

Fast alle Befehlszeilenoperationen können mit fabric durchgeführt werden, Sie werden es nicht bereuen, es zu lernen.