Skriptprüfung HTML

Skriptprüfung HTML

Ich habe einen HTTP-CGI-Befehl (http://cameraIP:port/cgi-bin/CGIProxy.fcgi?cmd=getDevState&usr=user&pwd=password), die im Browser zurückkehrt

<CGI_Result>
    <result>0</result>
    <IOAlarm>0</IOAlarm>
    <motionDetectAlarm>1</motionDetectAlarm>
    <soundAlarm>0</soundAlarm>
    <record>0</record>
    <sdState>0</sdState>
    <sdFreeSpace>0k</sdFreeSpace>
    <sdTotalSpace>0k</sdTotalSpace>
    <ntpState>1</ntpState>
    <ddnsState>0</ddnsState>
    <url>http%3A%2F%2Fgg3460.myfoscam.org%3A22222</url>
    <upnpState>0</upnpState>
    <isWifiConnected>0</isWifiConnected>
    <wifiConnectedAP></wifiConnectedAP>
    <infraLedState>1</infraLedState>
</CGI_Result>

Ich möchte ein Skript erstellen, das prüft, ob motionDetectAlarm gleich 2 ist, und eine Restfull-API-Put-Methode aufruft. Ist das möglich?

Ich kann die Resfull-API aufrufen mitcurl -X PUT -d arg=val -d arg2=val2 localhost:8080

Wie kann ich die While-Schleife ausführen? Ich möchte, dass die Schleife ewig läuft. Danke.

Antwort1

Führen Sie eine „Endlosschleife“ aus, rufen Sie die Webseite auf und suchen Sie nach dem genauen HTML-Code. grep -qWird mit „Erfolgreich“ beendet, wenn das spezifische Tag und der Wert vorhanden sind, wodurch die curlAusführung des nachfolgenden Codes ermöglicht wird:

while :
do
  wget or curl the CGIProxy script | grep -q '<motionDetectAlarm>2</motionDetectAlarm>' && 
    curl -X PUT -d arg=val -d arg2=val2 localhost:8080
done

verwandte Informationen