Holger: ssh über IPC::open2

Beitrag lesen

Hallo,

Das Problem bei ssh und rsh ist, dass die Prozesse solange offen bleiben, bis der Remoteprozess geschlossen oder STDOUT umgeleitet wurde, denn wohin soll der Remoteprozess sonst schreiben, wenn der ssh bzw. rsh Prozess plötzlich weg ist?

Ich möchte den ssh-Prozess ja nicht schließen - ich möchte ledeglich noch während der Laufzeit von server2.pl die Datem in server.pl auswerten und eine Antwort zurüksenden.

Nun entweder änderst du STDOUT nach /dev/null oder nutzt die Option ssh -n.

hab ich mal gemacht:

open2(my $pipei, my $pipeo, 'ssh', '-n', '172.20.200.21', "/root/server2.pl");

Durch die Option -n erhält server2.pl aber keine Daten mehr von server1.pl, sodass folgendes passiert:

linux:~ # ./server1.pl
server 1: sending data: 1
server 1: receiving...
root@172.20.200.21's password:
server 1: received 2

server 1: sending data: 3
server 1: receiving...
server 1: received 4

linux:~ # server 2: receiving...
Use of uninitialized value in concatenation (.) or string at /root/server2.pl line 15.
server 2: received:
server 2: sending data: 2
server 2: receiving...
Use of uninitialized value in concatenation (.) or string at /root/server2.pl line 22.
server 2: received:
server 2: sending data: 4

Schau mal in der manpage von ssh nach, da ist die Option etwas besser geschildert.

Ja, aber:

"Redirects stdin from /dev/null (actually, prevents reading from stdin)"

server2.pl muss ja aber noch Daten erhalten...

Ich hoffe ich konnte helfen.

Ja, Danke.

MfG Holger