Sonderzeichen bei ssh-Befehlsaufruf

Antworten
Nachricht
Autor
sw-stefan
Beiträge: 1
Registriert: 13. Dez 2005 9:02

Sonderzeichen bei ssh-Befehlsaufruf

#1 Beitrag von sw-stefan » 11. Feb 2008 15:44

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?

petameta
prolinux-forum-admin
Beiträge: 1294
Registriert: 14. Feb 2003 13:19

#2 Beitrag von petameta » 11. Feb 2008 15:50

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'

sw-stefan2

#3 Beitrag von sw-stefan2 » 11. Feb 2008 16:21

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!

petameta
prolinux-forum-admin
Beiträge: 1294
Registriert: 14. Feb 2003 13:19

#4 Beitrag von petameta » 11. Feb 2008 20:33

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.

sw-stefan3

#5 Beitrag von sw-stefan3 » 12. Feb 2008 10:10

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?

Benutzeravatar
hjb
Pro-Linux
Beiträge: 3252
Registriert: 15. Aug 1999 16:59
Wohnort: Bruchsal
Kontaktdaten:

#6 Beitrag von hjb » 12. Feb 2008 11:51

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
Pro-Linux - warum durch Fenster steigen, wenn es eine Tür gibt?

sw-stefan4

#7 Beitrag von sw-stefan4 » 12. Feb 2008 14:03

klappt. vielen dank. hatte ja ne menge probiert, aber diesen fall nicht.

Antworten