Thread Remote Shell Variablen (11 answers)
Opened by audacity363 at 2013-10-02 08:26

martin.g
 2013-10-02 09:43
#170892 #170892
User since
2013-09-20
40 Artikel
BenutzerIn
[default_avatar]
Hi,
ich vermute, Du wolltest Dich auf $SEMAPHOREN_PATH beziehen. Syntaktisch wäre folgendes korrekt:
Code: (dl )
1
2
3
4
5
6
7
8
my $abfrage = "rsh $ARGV[0] export SEMAPHOREN_PATH=$remote_sem_path;
env | grep SEMA;
$net_post_path/netposts $ARGV[1];
ls -lisa \$SEMAPHOREN_PATH;
ipcs -s -a";
printf "Execute [%s]\n", $abfrage;
$result = `$abfrage`;
print $result;

Erklärt hat es GwenDragon ja schon. Ob einfache Anführungeszeichen mit Stringverkettung oder Escaping des $ mit \ ist Geschmackssache. Doppelt escapen ist nicht notwendig.

Semantisch/logisch wird Dein Programm aber trotzdem nicht funktionieren. Probiere doch mal folgendes aus:
Code: (dl )
1
2
`rsh $ARGV[0] touch /tmp/1;
touch /tmp/2`;

Du würdest nun erwarten, dass auf Deinem Remote Host im tmp Verzeichnis zwei Dateien liegen. Dort liegt aber nur die erste. Die zweite liegt auf Deinem lokalen Host. Das passiert aber genau so, wenn Du Dein Kommando von Hand in die Shell eingibst und liegt daran, dass das rsh Kommando nach dem ersten ; abgeschlossen ist und Du das zweite lokal ausführst.

Richtig wäre:
Code: (dl )
`rsh $ARGV[0] touch /tmp/1 \\; touch /tmp/2`;

oder
Code: (dl )
1
2
`rsh $ARGV[0] "touch /tmp/1 ;
touch /tmp/2"`;

Last edited: 2013-10-02 09:50:21 +0200 (CEST)

View full thread Remote Shell Variablen