marinux
Goto Top

Bash quotingproblem: command in command

HAllo,

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

Content-ID: 208446

Url: https://administrator.de/contentid/208446

Ausgedruckt am: 22.11.2024 um 06:11 Uhr

Lochkartenstanzer
Lochkartenstanzer 21.06.2013 aktualisiert um 16:10:50 Uhr
Goto Top
Zitat von @marinux:
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
marinux
marinux 21.06.2013 um 16:28:12 Uhr
Goto Top
Hi,

das funktioniert. Nur gefühlt habe ich genau das Gleiche heute schon 100x ausprobiert...

Manchmal ist der Wurm drin.

Danke und Gruß
Lochkartenstanzer
Lochkartenstanzer 22.06.2013 um 21:57:31 Uhr
Goto Top
Zitat von @marinux:
das funktioniert.

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.