2015-08-27 17 views
5

Zusammenfassung: Befehle an Twisted's Schacht können nicht automatisiert werden. Suche nach Lösungen/Beratung.Scripting mit Twisted's Schacht

Twisted hat ein großes Stück Funktionalität namens Schacht. Es ermöglicht dem Benutzer, zu einem aktuell laufenden Twisted-Server ssh zu gehen und seine Interna zu prüfen/zu interagieren.

Ich möchte mit diesem einige Scripting machen. Anschließen einfach Schacht erfordert

ssh localhost -p 12345 

und dann wird der Benutzer in einen Python-Interpreter mit Zugriff auf den laufenden Prozess fallen gelassen.

Normalerweise mit ssh kann man einen Befehl auf dem Remote-Server ausführen und beenden, z.

ssh [email protected] 'ls' 

wird 'ls' im Login-Verzeichnis ausführen und dann wird die SSH-Verbindung geschlossen.

würde Ich mag so etwas wie

ssh localhost -p 12345 'print "hello, world"' 

Schacht, auszuführen, sondern erhalte ich (mit ssh ausführlich):

debug1: Authentication succeeded (password). 
debug1: channel 0: new [client-session] 
debug1: Entering interactive session. 
debug1: Sending environment. 
debug1: Sending env LANG = en_US.UTF-8 
debug1: Sending command: print "Hello world" 
exec request failed on channel 0 

Auf jeden Fall kann ich Operationen auf Schacht automatisieren?

+0

Haben Sie versucht "Echo" drucken "Hallo Welt" '| ssh localhost -p 12345'? –

+0

Das Ergebnis (mit ssh -v für ausführliches Debugging): 'root @ localhosts Passwort: debug1: Authentifizierung erfolgreich (Passwort). debug1: Kanal 0: neu [Client-Sitzung] debug1: Interaktive Sitzung eingeben. debug1: Sendeumgebung. debug1: Senden env LANG = en_US.UTF-8 Shell-Anforderung fehlgeschlagen auf Kanal 0' – ChaimKut

Antwort

3

Der Grund, warum ssh localhost -p 12345 print 'Hello world' fehlschlägt, ist, dass "print 'Hello world'" als "exec" Anfrage gesendet wird, die Befehl ausführen soll. Dein Server (Schacht) unterstützt das (offensichtlich) nicht.

Sie müssen stattdessen Python-Interpreter-Standard-Eingabe füttern. Zum Beispiel:

ssh -tt localhost -p 12345 << EOS 
print "Hello world" 
EOS 

Hinweis -tt flag - zwingt sie ssh tty unabhängig Ihr Eingabegerät nicht tty zuzuordnen ist. Ohne -tt erhalten Sie die Fehlermeldung "Shell-Anfrage fehlgeschlagen auf Kanal".