Bash quotingproblem: command in command
HAllo,
folgendes Konstrukt:
Es soll ein Programm über ssh auf einem entfernten Rechner gestartet und eine Info damit ausgelesen werden. Da dies crashen kann, ist ein timeout vorgeschaltet. Bevor auf dem entfernten Rechner das Programm mit seinen Argumenten gestartet wird, soll versucht werden es zu killen, sofern es mit den selben Argumenten schon geöffnet ist.
Dabei schleicht sich aber ein Quoting-Problem ein. pkill versucht nun auf dem entfernten Rechner mit -f ${RM_DIR}/prog das Programm zu finden. Das -s interpretiert pkill als eigenes Argument.
Kann mir jmd. helfen, damit pkill als Suchmuster "${RM_DIR}/prog -s ${LC_IP}" verwendet?
Gruß
Marinux
folgendes Konstrukt:
#!/bin/bash
TMP="$(timeout ${EXE_TIME} ssh root@${RM_IP} "pkill -f ${RM_DIR}/prog -s ${LC_IP}; ${RM_DIR}/prog -s ${LC_IP}"|grep info)"
echo ${TMP}
Es soll ein Programm über ssh auf einem entfernten Rechner gestartet und eine Info damit ausgelesen werden. Da dies crashen kann, ist ein timeout vorgeschaltet. Bevor auf dem entfernten Rechner das Programm mit seinen Argumenten gestartet wird, soll versucht werden es zu killen, sofern es mit den selben Argumenten schon geöffnet ist.
Dabei schleicht sich aber ein Quoting-Problem ein. pkill versucht nun auf dem entfernten Rechner mit -f ${RM_DIR}/prog das Programm zu finden. Das -s interpretiert pkill als eigenes Argument.
Kann mir jmd. helfen, damit pkill als Suchmuster "${RM_DIR}/prog -s ${LC_IP}" verwendet?
Gruß
Marinux
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 208446
Url: https://administrator.de/contentid/208446
Ausgedruckt am: 22.11.2024 um 06:11 Uhr
3 Kommentare
Neuester Kommentar
Zitat von @marinux:
Kann mir jmd. helfen, damit pkill als Suchmuster "${RM_DIR}/prog -s ${LC_IP}" verwendet?
Kann mir jmd. helfen, damit pkill als Suchmuster "${RM_DIR}/prog -s ${LC_IP}" verwendet?
Hast Du verscucht, "${RM_DIR}/prog -s ${LC_IP}" in quotes die Du durch backslash escapest zu setzen udn dann pkill zu übergeben?
Etwa so ähnlich:
MP="$(timeout ${EXE_TIME} ssh root@${RM_IP} "pkill -f \"${RM_DIR}/prog -s ${LC_IP}\" ; ${RM_DIR}/prog -s ${LC_IP}"|grep info)"
ggf. mußt Du daß über mehrere Stufen machen.
lks
schön.
Nur gefühlt habe ich genau das Gleiche heute schon 100x ausprobiert...
Es gibt aso Tage, da ...
... ist der Wurm drin.
Manchmal sieht man den Wald vor lauter Bäumen nicht. Da muß man einfach mal jemand anderen draufschauen lassen.
Danke und Gruß
gern geschehen.