PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Variable per SSH übergeben



hennerich
15.07.2004, 10:05
Hallo,

ich habe auf meinem Client eine Variable mit export definiert und möchte diese in einem Script anwenden, das ich per SSH auf meinem Server ausführe.
Dazu wollte ich auf dem Server eine neue Variable deklarieren:

Client:
export VARCLIENT=/tmp
ssh root@server 'export VARSERVER=$VARCLIENT' /home/user/runscript.sh

leider funktioniert das nicht so. Hat jemand eine Idee wie ich das lösen könnte??

Danke

Henri

Bonk
15.07.2004, 10:25
Hmm, wenn ich das richtig verstanden habe, dann kannst Du an das Skript deine Variable anhängen und als $1 im selbigen verwursten.

/home/user/runscript.sh $trallala

Sollte funktionieren, oder ?

hennerich
15.07.2004, 10:44
Hallo Bonk,

lokal funktioniert das auch, aber leider nicht per SSH.
Wenn ich das so mache:
ssh root@server home/user/runscript.sh $trallala
dann will er die Variable $trallala von server nehmen und dieser kennt die Variable nicht. Ich muss also explizit angeben das er die vom Client nimmt. Nur wie ???

Henri

hehejo
15.07.2004, 10:48
Hm, vll. musst du das alles in ' ' setzen.

ssh root@server '/home/user/runskript.sh tralala'

Bonk
15.07.2004, 10:55
Nee, geht nicht ? Die Variable müßte auf dem client richtig ersetzt werden.

export TRALLALA=peng
ssh user@server /../../runscript.sh $TRALLALA

ergibt : ssh user@server /../../runscript.sh peng

Haste das mal getestet?

hennerich
15.07.2004, 11:04
@hehejo
habe ich alles versucht:
ssh root@server "home/user/runscript.sh" $trallala
ssh root@server "home/user/runscript.sh $trallala"
ssh root@server 'home/user/runscript.sh' $trallala
ssh root@server 'home/user/runscript.sh $trallala'
ssh root@server `home/user/runscript.sh` $trallala
ssh root@server `home/user/runscript.sh $trallala`

@Bonk
das ist ja bei mir so:
runscript.sh
...
export trallala=/pfad
...
ssh root@server home/user/runscript.sh $trallala

Bonk
15.07.2004, 11:07
aaahh!!!
Du mußt den Kram groß schreiben!

export TEST=blah
echo $TEST

hennerich
15.07.2004, 11:15
@Bonk
OK, jetzt der richtige Ausschnitt aus meinem Script:

...
export DEST_PATH=/var/mail/patch
...
ssh root@server /root/install.sh $DEST_PATH
...

Henri

Bonk
15.07.2004, 11:23
Wie jetzt? Geht nicht?
Sitzt Du neben den Rechnern?
Teste mal Sendmail an oder aus (mir fällt nix besseres ein). Ich denke das sind deine nicht produktiven privat Rechner, oder?

export TEST=stop oder start
ssh root@server /etc/init.d/sendmail $TEST

Das sollte funktionieren.

hennerich
15.07.2004, 13:29
Hallöchen,

ich habe einfach in meinem Script das ich auf dem Server starte ein echo $DEST_PATH drin, da sehe ich dann das Ergebnis.
Leider ist es immer leer.

Henri

Bonk
15.07.2004, 13:33
Nee, is klar! Auf dem Server kannst Du nicht mit DER Variable arbeiten! Da mußt Du $1 nehmen.

hennerich
15.07.2004, 14:43
Wie jetzt, bitte mal näher erklären???

Henri

hehejo
15.07.2004, 15:04
Wenn dieses Variable eine bei dir lokal exportierte Varbiable ist, dann bleibt die Variable auch bei dir.
Du kannst dann zwar den Wert übergeben, aber nicht die Info, dass es eigentlich eine Variable ist.
Wenn du den Wert übergibst, dann kannst du den aufragen steht dann in $1.
BSP:


$ export DEST=/home
$ cat runskript.sh
#!/bin/bash
echo $1
$ ./runskript.sh $DEST
/home
$

Wenn die Variable aber die gleiche bleiben soll, dann leg die doch einfach in deinem Skript fest.

hennerich
15.07.2004, 15:29
Danke sehr, das hat funktioniert.

Henri

rup
15.07.2004, 19:33
Es sollte auch so gehen (bei Anfuehrungszeichen statt Hochkomma wird die Variable $VARCLIENT ausewertet):

export VARCLIENT=/tmp
ssh root@server "export VARSERVER=$VARCLIENT ; /home/user/runscript.sh"

hennerich
16.07.2004, 12:18
Hallo rup,

habe es gerade getestet, das funktioniert auch.
Danke noch mal.

Henri