2016-08-12 1 views
0

Ich versuche, eine Art von Ping eines SFTP-Servers zu erstellen und melden, wenn die Verbindung mit Python3 fehlschlägt.Python3 Subprozess führt Befehl in alten Shell - sftp Probleme

Der Befehl, den ich auszuführen versuche ist diese:

sftp -P port [email protected] <<<exit> /dev/null 2>&1 

Es funktioniert, wenn ich es vor Ort mit all meiner Shell ausführen (sh 4.3, bash, zsh) auf Bogen, es funktioniert, wenn ich ausführen Es in subprocess.check_call ([Befehl], Shell = True) (auch auf meinem Computer), aber es funktioniert nicht auf dem Server, weil/bin/sh von check_call verwendet wird und die installierte Version keine Umleitung wie "< < erlaubt < Ausfahrt ".

ich diesen Fehler:/bin/sh: 1: Syntaxfehler: Umleitung unerwartete

ich wirklich die „exit“ Schlüsselwort müssen den Prozess übergeben, sobald es dem SFTP verbunden ist, um automatisch die Verbindung zu schließen. Dafür muss ich entweder den richtigen Befehl finden, um an das alte/bin/sh zu übergeben, oder den Unterprozess anweisen,/bin/bash anstelle von/bin/sh zu verwenden.

Weiß jemand, wie ich das beheben kann?

Server 3.16.0-60-generic 80 # ~ 14.04.1-Ubuntu

Thank you very much.

Antwort

0

/bin/sh wurde tatsächlich nach/bin/dash umgeleitet. Ich habe es in/bin/bash geändert und jetzt funktioniert es.