Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

ssh: wie schicke ich ein remote-kommando ohne remote-substitution?

3 views
Skip to first unread message

Andreas Leitgeb

unread,
Dec 2, 2012, 5:33:17 PM12/2/12
to
Aus einem script heraus soll ein kommando auf einem remote-rechner
mit gegebenen Parametern ausgeführt werden. Das script sollte ein
100% transparenter "stub" für das remote-programm sein.

$ cat prog
#!/bin/sh
ssh remotehost /path/to/prog "$@"
$
(so geht es leider nicht, weil die argumente am zielrechner nocheinmal
zerlegt und geparst werden.

Wie konstruiere ich aus dem "$@" des stub-scripts einen string,
den ich per ssh an den remote-host schicken kann, sodass dort
das eigentliche prog mit exakt den gegebenen Parametern aufgerufen
wird?

Im endeffekt will ich etwa lokal
prog '
mehrzeiliges argument mit [ { ] } " meta-zeichen,
leerzeichen und newlines.
'
aufrufen können, und das script soll dann exakt diesen aufruf mit dem
prog am remote-rechner machen. redirections oder "*"-interpretation am
server sind also explizit nicht erwuenscht.

PS: Nachsatz: hab nun eine halbe Loesung, die mit allem ausser single-quotes
im Argument klarkommt. Das reicht derweilen, da Singlequotes zumindest
derzeit nicht in den Argumenten auftreten:
cmd=""; for i; do cmd="$cmd '${i}'"; done
ssh remote /path/to/prog "$cmd"
diverse Versuche, in der Schleife mit Hilfe von ${i/...} etwaige '
durch '\'' zu ersetzen waren bis dato leider nicht erfolgreich.

0 new messages