Seite 1 von 1

Sonderzeichen bei ssh-Befehlsaufruf

Verfasst: 11. Feb 2008 15:44
von sw-stefan
ich versuche über ssh auf einem entfernten system einen befehl auszuführen. Leider ist in dem befehl ein "$" einhalten, den ich nicht wegmaskiert bekomme.

Code: Alles auswählen

# ssh user@remote befehl_mit_argument_mit_$_drinne

hat jemand eine idee, bitte?

Verfasst: 11. Feb 2008 15:50
von petameta
Das $ interpretiert bash so, daß eine Variable folgt. Um das zu vermeiden, setzte den Befehl in 2 Hochkommata:

Code: Alles auswählen

ssh user@remote 'befehl_mit_argument_mit_$_drinne'

Verfasst: 11. Feb 2008 16:21
von sw-stefan2
das hatte ich schon probiert, aber es scheint, dass ssh das $-Zeichen auch noch mal interpretiert. es geht auch nicht mit \$ oder mit Gänsefüßen.

gibt es noch eine andere möglichkeit?

ps. irgendwie kann ich mich nach einer änderung meiner mail-adresse im profil nciht mehr anmelden, da angeblich mein benutzername nicht stimmt. komisch!

Verfasst: 11. Feb 2008 20:33
von petameta
Also bei mir geht's:

Zum Test habe ich auf dem Remote-Rechner eine Datei erstellt, /tmp/test$x, der Inhalt ist "OK" als Text.

Lokal habe ich folgendes ausgeführt:

Code: Alles auswählen

ssh root@192.168.0.29 'cat /tmp/test$x'
Als Ausgabe bekomme ich "OK", also den Inhalt der Datei auf dem Remote-Rechner. Lasse ich die Hochkommata weg, bekomme ich eine entsprechende Fehlermeldung, daß die Datei /tmp/test nicht gefunden wurde.

Verfasst: 12. Feb 2008 10:10
von sw-stefan3
hm. bei mir nicht. weder unter ubuntu 7.04, ssh-version: 4.3p2-8ubuntu1
noch unter centos 5.1, ssh version: openssh-4.3p2-24.el5

bei beiden bekomme ich mit

Code: Alles auswählen

ssh localhost 'ls -l /tmp/test$x'
nur ein

Code: Alles auswählen

ls: /tmp/test: Datei oder Verzeichnis nicht gefunden
muss ich ev. beim sshd was umstellen?

Verfasst: 12. Feb 2008 11:51
von hjb
Hi!

Richtig erkannt, dass das $ von zwei Shells interpretiert wird. Die Lösung ist, vor das $ noch ein \ zu setzen, dann sieht die zweite Shell \$, was sie als $ interpretiert:

Code: Alles auswählen

ssh localhost 'ls -l /tmp/test\$x'
Grüße,
hjb

Verfasst: 12. Feb 2008 14:03
von sw-stefan4
klappt. vielen dank. hatte ja ne menge probiert, aber diesen fall nicht.