Sonderzeichen bei ssh-Befehlsaufruf

Post Reply
Message
Author
sw-stefan
Posts: 1
Joined: 13. Dec 2005 9:02

Sonderzeichen bei ssh-Befehlsaufruf

#1 Post by 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: Select all

# ssh user@remote befehl_mit_argument_mit_$_drinne

hat jemand eine idee, bitte?

petameta
prolinux-forum-admin
Posts: 1294
Joined: 14. Feb 2003 13:19

#2 Post by petameta »

Das $ interpretiert bash so, daß eine Variable folgt. Um das zu vermeiden, setzte den Befehl in 2 Hochkommata:

Code: Select all

ssh user@remote 'befehl_mit_argument_mit_$_drinne'

sw-stefan2

#3 Post by 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!

petameta
prolinux-forum-admin
Posts: 1294
Joined: 14. Feb 2003 13:19

#4 Post by 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: Select all

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 Post by 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: Select all

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

Code: Select all

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

User avatar
hjb
Pro-Linux
Posts: 3264
Joined: 15. Aug 1999 16:59
Location: Bruchsal
Contact:

#6 Post by 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: Select all

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 Post by sw-stefan4 »

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

Post Reply