Script immer ausführen + Start mit IR FB

  • Hallo,


    ich brauche ein Script, das ständig läuft und immer einen Status von einem NetIO abfragt.


    Per Putty kann ich so einen Port abfragen:

    Code
    echo "getport 1" | nc 192.168.0.90 50290

    Als Antowrt bekomme ich dann eine 1 oder eine 0, je nach Zustand.


    Diese Zustände möchte ich dann auswerten und wenn er z.B. 0 ist, dann soll eine Meldung per:

    Code
    svdrpsend.pl MESG "Test"

    ausgegeben werden.
    Wenn der Status aber 0 ist, dann soll das Script wieder von vorne starten.


    Wie kann ich sowas umsetzen?
    Ich habe momentan einen TestVDR mit LinVDR m laufen.


    Gruß
    Papsi

    Vice President Logistics and Materials Handling of the first 40" TFT Sammelbestellung and Atmolight I + II + III

    3 Mal editiert, zuletzt von Papsi ()

  • Hi,


    so in etwa...


  • Hallo,


    In Putty sehe ich immer wie sich der Status von 1 auf 0 und umgedreht ändert.
    Nur in der Ausgabe am TV bekomme ich immer 1 angezeigt, selbst wenn die Abfrage 9 ergibt.




    Und noch was:
    Wenn ich es so wie von EGAL geschrieben probiere, dann bekomme ich als Fehler dies hier:

    Code
    test.pl: line 9: syntax error near unexpected token `fi'
    test.pl: line 9: `      fi'

    Vice President Logistics and Materials Handling of the first 40" TFT Sammelbestellung and Atmolight I + II + III

  • Hi,


    Zitat

    Original von Papsi
    [In Putty sehe ich immer wie sich der Status von 1 auf 0 und umgedreht ändert.
    Nur in der Ausgabe am TV bekomme ich immer 1 angezeigt, selbst wenn die Abfrage 9 ergibt.


    dann kein Returnwert ($?) sondern Ausgabewert vergleichen

    Code
    value=`echo "getport 1" | nc 192.168.0.90 50290`
    	if [ $value -eq 0 ]; then
    		svdrpsend.pl MESG "0"
    	else
    		svdrpsend.pl MESG "1"
    	fi


    Zitat

    Und noch was:
    Wenn ich es so wie von EGAL geschrieben probiere, dann bekomme ich als Fehler dies hier:

    Code
    test.pl: line 9: syntax error near unexpected token `fi'
    test.pl: line 9: `      fi'


    jo, weil kein Code nach else, nur Platzhalter/Kommentar mit # ;)

  • Oder Du lässt Dir den Rückgabewert gleich direkt anzeigen:


  • Hallo,


    habe jetzt einiges probiert, das Beispiel von C-3PO klappt.
    Ich brauche allerdings nicht die Werte angezeigt, sondern für die if then Abfrage.


    Daher habe ich es so probiert:


    Und das kommt als Ausgabe in Putty und am TV wird immer nur 1 angezeigt.
    In der Console wird der Wechsel von 0 auf 1 erkannt und angezeigt, am TV wiederrum immer nur 1.

    Code
    1
    : integer expression expected
    220 htpc SVDRP VideoDiskRecorder 1.4.7-ext34-sc; Sun Nov  8 14:44:23 2009
    250 Message queued
    221 htpc closing connection
    0
    : integer expression expected
    220 htpc SVDRP VideoDiskRecorder 1.4.7-ext34-sc; Sun Nov  8 14:44:29 2009
    250 Message queued
    221 htpc closing connection


    Ich denke mal das ": integer expression expected" passt da irgendwie nicht rein...

    Vice President Logistics and Materials Handling of the first 40" TFT Sammelbestellung and Atmolight I + II + III

  • Dann so:



    BTW:


    Wichtig ist, dass beim "test" Befehl immer ein Leerzeichen vor und hinter den "[" und "]" ist. ;)

  • Code
    ./test.pl: line 12: [: -eq: unary operator expected
    ./test.pl: line 13: [: -eq: unary operator expected


    Bringt das hier...

    Vice President Logistics and Materials Handling of the first 40" TFT Sammelbestellung and Atmolight I + II + III

  • Zitat

    Original von C-3PO
    do
    [ $value -eq 0 ] && svdrpsend.pl MESG "blabla Text1....."
    [ $value -eq 1 ] && svdrpsend.pl MESG "blabla Text2....."
    done[/code]


    So wird die Abfrage aber immer 2mal ausgeführt.

  • Teste mal:



  • Ich täte das 'VALUE=`bla bla`' innerhalb der while-Schleife ausführen..


    Gruß
    e9hack

  • Zitat

    Original von C-3PO
    Ähmm, "./test.pl..." ???


    Das ist ist ein bash Script, kein Perl Script.


    Wie soll ich es denn starten
    sh test.pl
    funktioniert auch


    ist das ein Unterschied?

    Vice President Logistics and Materials Handling of the first 40" TFT Sammelbestellung and Atmolight I + II + III

  • Zitat

    Original von Papsi


    Wie soll ich es denn starten
    sh test.pl
    funktioniert auch


    ist das ein Unterschied?


    perl scripte heißen *.pl
    bash scripte *.sh


    ist für die funktion eigentlich egal, aber der form wegen ;)


    P.S.:


    wenn du nur meldung bei "1" brauchst sollte ein :



    habs nicht getestet

  • Zitat

    Original von e9hack
    Ich täte das 'VALUE=`bla bla`' innerhalb der while-Schleife ausführen..


    Gruß
    e9hack


    OK, dann so: ;)



    ...Aber das war nicht der Fehler, sondern "VALUE" und "value". :)

  • Zitat

    Original von egal


    So wird die Abfrage aber immer 2mal ausgeführt.


    Ok, um den "riesen" Netzwerktrafik zu veringen könnte man es auch so machen: :)


  • Zitat

    Original von C-3PO
    Ok, um den "riesen" Netzwerktrafik zu veringen könnte man es auch so machen: :)



    Das is jetzt aber in die Hose gegangen. Wenn VALUE 0 ist, kann man sich die Abfrage auf 1 schenken. Im übrigen verursacht nur die Zeile VALUE=`...` Netzwerktrafik.


    Gruß
    e9hack

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!