Thread Net::OpenSSH > nachfolgende, abhängige Kommandos (11 answers)
Opened by Martin at 2013-09-19 18:32

Gast Martin
 2013-09-19 18:32
#170413 #170413
Hallo,

ich habe mit Net::OpenSSH (zumindest laut eigener Beschreibung eines der besten SSH Module) eine Reihe Kommandos auf einem Remote Host abzuarbeiten. Ich kann auf dem Remote Host weder Shell Skripte ablegen, noch kann ich alle Kommandos auf einmal ausführen.

Ich habe beispielsweise diesen Code:
Code: (dl )
1
2
3
4
my $ssh = Net::OpenSSH->new( '10.10.10.10', {user => 'abc', passwd => 'geheim'} );
print $ssh->capture('pwd'); # /home/abc/
$ssh->capture('cd /tmp');
print $ssh->capture('pwd'); # /home/abc/


Das cd in der dritten Zeile hat also keine Auswirkung auf die Umgebung der vierten Zeile. Mittlerweile weiß ich auch, wieso: Net::OpenSSH nutzt die Master/Slave Funktion von ssh. new() baut eine Verbindung auf und läßt sich per socket ansprechen. Jedes capture() erzeugt einen Slave und nutzt dafür die Verbindung des Master. Generell gut, praktisch hat jeder Slave aber seine eigene Umgebung und aufeinander aufbauende Kommandos sind nicht möglich.

Kann mir jemand sagen, wie ich dieses Problem mit Net::OpenSSH lösen kann?
Um das ganze zu erschweren handelt es sich dabei nur um eine API per SSH. Das heißt, ich kann auch keine bash, Pipes oder ähnliches auf dem Ziehost erzeugen.

Viele Grüße
Martin
Last edited: 2013-09-19 18:36:21 +0200 (CEST)

View full thread Net::OpenSSH > nachfolgende, abhängige Kommandos