horizontalkeyboard
Anmeldungsdatum: 14. Januar 2015
Beiträge: 14
|
Hallo, wenn ich mich manuell mit ssh einlogge
sieht mein $PATH so aus:
| /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games
|
Wenn ich mich mithilfe eines Skripts automatisch mit ssh einlogge
| sshpass -p password ssh x@y "bash"
|
sieht mein $PATH so aus:
| /usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games
|
Woran liegt das und wie kann ich das beheben? Viele Grüße,
horizontalkeyboard
|
track
Anmeldungsdatum: 26. Juni 2008
Beiträge: 7174
Wohnort: Wolfen (S-A)
|
Auf den ersten Blick würde ich sagen, vor dem Aufruf von sshpass ist die Variable $PATH leer. (Die Restbelegung stammt vermutlich von ssh (→ man ssh, Abschnitt ENVIRONMENT) Solange Du nicht verrätst, wie Dein Skript aussieht und wie Du es aufrufst, können wir allerdings nicht wissen warum. Nicht dass Du Deine eigenen Variablen in dem Skript auch $GROSS schreibst, und deshalb $PATH kaputt geschrieben wird, oder sowas ? track
|
sebix
Moderator, Webteam
Anmeldungsdatum: 14. April 2009
Beiträge: 5350
|
Und wie fragst du $PATH auf dem server mit sshpass auf? Was passiert, wenn du sshpass nicht vom Skript startest, sondern im Terminal. Bitte poste immer Kommando + Ausgabe, wie es in deinem Terminal-Fenster steht.
|
horizontalkeyboard
(Themenstarter)
Anmeldungsdatum: 14. Januar 2015
Beiträge: 14
|
Hier ein Durchlauf mit ssh und sshpass vom Terminal aus, mit Ausgaben: | $ ssh x@y
x@y ~ $ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games
|
| $ sshpass -p password ssh -t x@y "bash"
x@y ~ $ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games
|
|
sebix
Moderator, Webteam
Anmeldungsdatum: 14. April 2009
Beiträge: 5350
|
Und was sagt
| sshpass -p password ssh -t x@y "echo $PATH"
|
? Also ohne vorherigem expliziten Aufruf von bash? Ich vermute deine Default-Shell ist eine andere, vermutlich die dash. Die aktive Shell steht in $SHELL drinnen, wie lautet sie?
|
track
Anmeldungsdatum: 26. Juni 2008
Beiträge: 7174
Wohnort: Wolfen (S-A)
|
Ok, also keine Frage des Skripts ... Was sagt dann bei Dir ein ssh -t x@y "bash"
echo $PATH ? - irgendwie müssen wir das Problem ja eingrenzen. (im Grunde gibt es 3 Verdächtige: das sshpass, die Option -t und den bash - Aufruf) track
|
horizontalkeyboard
(Themenstarter)
Anmeldungsdatum: 14. Januar 2015
Beiträge: 14
|
| sshpass -p password ssh -t x@y "echo $PATH"
|
gibt den $PATH aus der auf meinem Client (von dem aus ich ssh / sshpass aufrufe) vorhanden ist: | $ echo $PATH
/home/z/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/lib/jvm/java-7-oracle/bin:/usr/lib/jvm/java-7-oracle/db/bin:/usr/lib/jvm/java-7-oracle/jre/bin
$ echo $SHELL
/bin/bash
|
| $ ssh x@y
x@y ~ $ echo $SHELL
/bin/bash
|
| $ sshpass -p password ssh -t x@y "echo $PATH"
/home/z/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/lib/jvm/java-7-oracle/bin:/usr/lib/jvm/java-7-oracle/db/bin:/usr/lib/jvm/java-7-oracle/jre/bin
|
|
horizontalkeyboard
(Themenstarter)
Anmeldungsdatum: 14. Januar 2015
Beiträge: 14
|
@track: | $ ssh -t x@y "bash"
x@y ~ $ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games
|
|
track
Anmeldungsdatum: 26. Juni 2008
Beiträge: 7174
Wohnort: Wolfen (S-A)
|
Nun gut, dann haben wir ja den Übeltäter: offenbar bekommt die Shell auf dem entfernten Rechner beim expliziten Aufruf von bash die Umgebung (des lokalen Rechners ?) nicht mitgeliefert. Jetzt müsstest Du mal gucken, was da am sinnvollsten ist. (wofür hast Du den expliziten Aufruf von bash dort überhaupt eingefügt ?) LG, track
|
sebix
Moderator, Webteam
Anmeldungsdatum: 14. April 2009
Beiträge: 5350
|
Gibts auf dem entfernten Rechner horizontalkeyboard schrieb: | sshpass -p password ssh -t x@y "echo $PATH"
|
gibt den $PATH aus der auf meinem Client (von dem aus ich ssh / sshpass aufrufe) vorhanden ist
Ja, weil die Variable vor dem Ausfuehren von sshpass aufgeloest wird -.-
Kannst du mal echo $PATH in die Shell eingeben, die beim Aufruf von sshpass kommt, ohne dass du einen Befehl direkt als Parameter uebergibst?
|
horizontalkeyboard
(Themenstarter)
Anmeldungsdatum: 14. Januar 2015
Beiträge: 14
|
@sebix Hm, eventuell weiß ich nicht was du meinst, aber habe ich das nicht bereits gemacht? Siehe dieser Beitrag. @track Ich möchte mithilfe eines Skripts mich via ssh einloggen, dann bereits einige Kommandos ausführen, und schließlich manuell auf dem anderen Rechner weiterarbeiten. Deswegen der bash-Aufruf, ohne ihn wird die Verbindung wieder getrennt. Danke, ich schaue mir mal deinen Link an.
|