Andreas Leitgeb
unread,Dec 2, 2012, 5:33:17 PM12/2/12You do not have permission to delete messages in this group
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
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.