2017-08-15 3 views
1

Ich versuche ein Python-Skript zu schreiben, mit dem ich in einen Host ssh, einen curl-Befehl ausführen und dann die Ausgabe des Befehls analysieren kann.Python-Skript für den Zugriff auf einen Host mit ssh und Ausführen von Befehlen im Host

Ich versuche, so etwas wie

os.system('ssh HOST') 
os.system('curl ...') 

jedoch der curl Befehl auf dem Server wird nicht ausgeführt. Ich komme auf den Server, habe aber keine Verbindung mehr zum Python-Skript. Ich muss in der Lage sein, den curl-Befehl auszuführen und auf die Ausgabe zuzugreifen, damit ich sie analysieren kann. Irgendwelche Ideen, wie ich das erreichen kann? Vielen Dank.

+0

Warum nicht pycurl verwenden? –

Antwort

0

Verwenden Sie das Modul subprocess, um auf die Ausgabe eines von Ihnen ausgeführten Befehls zuzugreifen. Es gibt eine Menge Kontrolle über die OS-Befehle, die Sie ausführen. Hier ist ein Codeausschnitt.

import subprocess 
process_object = subprocess.Popen(['cat','myfile.txt'],stdout=subprocess.PIPE , stderr = subprocess.STDOUT) ; 
output = process_object.stdout.read() 

Ebenso Ihre Nutzung ['ssh','HOST','argument2','argument3'] für Ihre Implementierung. Ich bin mir nicht sicher, ob das dein Problem nicht löst. Aber es hilft, die Ausgabe zu bekommen.

+0

Wie nehme ich einen Teil des curl-Arguments als Eingabe vom Benutzer? Zum Beispiel muss argument2 etwas wie 'curl -s' Eingabe sein ', wo der Benutzer die Eingabe angeben kann. – ashkash

0

Geben Sie den Anruf an curl(1) in Ihrem ssh(1) Befehl wie ssh [email protected] curl somehost/somefile -o -. Verwenden Sie das Python-Subprozessmodul, um das Ergebnis zu erhalten.