Via SSH Befehl ohne Shell ausführen?

24/07/2008 - 08:52 von Manuel Reimer | Report spam
Hallo,

ich möchte auf einem entfernten System einen Befehl via SSH anstoßen.
Allerdings soll das Programm, welches ich ausführen will, direkt und
nicht über den Umweg einer Shell angestoßen werden. In den Parametern
versteckte "Spezialzeichen", die eine Shell interpretieren würde, sollen
also, alleine schon aus Sicherheitsgründen, nicht von einer Shell
interpretiert werden.

Beispiel:
$ ssh server0815 'echo `uname -a`'
Password:
SunOS server0815 ...

Gewünscht wàre gewesen, dass die Ausgabe so aussieht:
`uname -a`

Ist sowas machbar?

CU

Manuel

www.jetzt-abwaehlen.de Wàhlen gehen 2009! Ein Aufruf etwas zu àndern.

Die letzte Stimme, die man hört, bevor die Welt untergeht, wird die
eines Experten sein, der versichert, das sei gar nicht möglich.
 

Lesen sie die antworten

#1 Thomas Rachel
24/07/2008 - 09:43 | Warnen spam
Manuel Reimer schrieb:
Hallo,

ich möchte auf einem entfernten System einen Befehl via SSH anstoßen.
Allerdings soll das Programm, welches ich ausführen will, direkt und
nicht über den Umweg einer Shell angestoßen werden. In den Parametern
versteckte "Spezialzeichen", die eine Shell interpretieren würde, sollen
also, alleine schon aus Sicherheitsgründen, nicht von einer Shell
interpretiert werden.



Geht so nicht. ssh konsultiert immer die standardmàßige Shell und nutzt
die zur Ausführung der übergebenen Kommandozeile.

Auswege wàren:

* andere "Shell" nutzen, die nicht escaped (evtl. selbst schreiben)
* in die authorized_keys was dazubasteln, was das erledigt
* voraussetzen, daß auf der anderen Seite eine konforme Shell sitzt und
alle Parameter separat in '' einschließen; auftretende ' durch '\''
ersetzen.


Beispiel:
$ ssh server0815 'echo `uname -a`'



Würde dann zu
$ ssh server0815 "'echo' '`uname -a`'"
oder
$ ssh server0815 ''\''echo'\'' '\''`uname -a`'\'''

(automatisiert; das '' am Anfang und am Ende könnte man noch
wegoptimieren. Stört aber auch nicht...)


Thomas

Ähnliche fragen