Script immer ausführen + Start mit IR FB

  • Zitat

    Original von e9hack
    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


    Oooohhhps...,


    Du hast natürlich recht, dann doch lieber wieder so: :]


  • Hallo,


    wenn Ihr den Test

    Code
    [ "$VALUE" -eq 0 ]


    gegen diesen

    Code
    [ "x$VALUE" = "x0" ]


    austauscht, gibt es auch keine Laufzeitfehler, wenn mal keine Zahl oder eben nix zurück kommt ;)


    Gruß Geronimo

    Ich bin verantwortlich für das, was ich schreibe, nicht für das, was Du verstehst!

  • Hallo,


    dann fasse ich mal zusammen - Danke für die Hilfe - Läuft aber immer noch nicht.


    Hier die Ergebnisse:

    Code
    while (true)
    do
       if [ $(`echo "getport 1" | nc $IP $PORT`)  ]; then 
              svdrpsend.pl MESG "blabla Text1....."
       fi
       sleep $CHECKTIME
    done

    bringt:

    Code
    testvdr:~# sh test.sh
    : command not found


    ------------------------------------------------------------


    Code
    while sleep $CHECKTIME 
     do
      VALUE=`echo "getport 1" | nc $IP $PORT`
      [ "$VALUE" -eq 0 ] && svdrpsend.pl MESG "blabla Text1....."
      [ "$VALUE" -eq 1 ] && svdrpsend.pl MESG "blabla Text2....."
     done

    bringt:

    Code
    testvdr:~# sh test.sh
    : integer expression expected
    : integer expression expected

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

  • Hallo Vizepresidente ;)


    es fehlt die erste Zeile, die dem Betriebssystem sacht, wer denn für die Abarbeitung Deines Werkes zuständig ist.
    Also z.B.

    Bash
    #!/bin/bash


    Damit legst Du fest (# ist Kommentarzeichen), dass die Bash für Dein Script zuständig sein soll.


    Für ein perlscript müsste es

    Perl
    #!/usr/bin/perl


    heißen.
    Das ist ein nettes Viehtscher von Linux, denn damit kann die Dateiendung wechfallen oder auch Hugo heißen ;)


    Die Fehlermeldung von wegen "integer expression" ist genau der Fall, dass Dein nc eben keine Zahl liefert.
    In meinem letzten Post hatte ich Dir dafür einen Fix mitgeteilt.
    Mit einem

    Code
    echo $VALUE

    kannst Du überprüfen, was Du denn erhältst.


    Gruß Geronimo


    P.S. Ack so - wenn Du ein 'Befehl nicht gefunden' erhältst, kann es daran liegen, dass die Datei nicht ausführbar ist, oder Du sie "nicht" richtig angesprochen hast. Unter linux ist das aktuelle Verzeichnis nicht im Suchpfad für Befehle.
    Dementsprechend müsstest Du Dein Script so aufrufen:

    Code
    ./test.sh


    Wenn er dann immer noch meckert, hilft vielleicht ein

    Code
    chmod +x test.sh

    Ich bin verantwortlich für das, was ich schreibe, nicht für das, was Du verstehst!

    Einmal editiert, zuletzt von geronimo ()

  • Hallo,


    das
    #!/bin/...
    habe ich schon mit drin, nur wegen der Übersicht, weggelassen.




    Es kann als Rückmeldung nur 1 oder 0 kommen, was anderes gibt die Steuerung nicht aus.


    Wenn ich nach der Abfrage
    VALUE=`echo "getport 1" | nc $IP $PORT`
    ein
    echo $VALUE
    eingebe, bekomme ich entweder ne 1 oder ne 0 zurück(je nach Zustand)
    :EDIT(Siehe nächsten Beitrag)


    Nur leider funktioniert die IF THEN Abfrage nicht...

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

    Einmal editiert, zuletzt von Papsi ()

  • Noch ne Info:


    wenn ich dies probiere:

    Code
    [ "$VALUE" -eq 0 ] && svdrpsend.pl MESG "blabla Text1....."
      [ "$VALUE" -eq 1 ] && svdrpsend.pl MESG "blabla Text2....."

    bekomme ich:

    Code
    testvdr:~# ./test.sh
    : integer expression expected
    : integer expression expected
    1
    : integer expression expected
    : integer expression expected
    1
    testvdr:~#


    Wenn ich es gegen die hier tausche:

    Code
    [ "x$VALUE" = "x0" ] && svdrpsend.pl MESG "blabla Text1....."
      [ "x$VALUE" = "x1" ] && svdrpsend.pl MESG "blabla Text2....."

    bekomme ich diese Ausgabe, aber keine Meldungen am TV

    Code
    testvdr:~# ./test.sh
    1
    1
    1
    testvdr:~#

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

  • hy papsi


    das :


    Code
    $(`echo "getport 1" | nc $IP $PORT`)


    sollte eigentlich das gleiche wie :


    Code
    VALUE=`echo "getport 1" | nc $IP $PORT`


    bewirken.


    sonst probier mal :


  • Die Ausgabe kommt immer am TV, egal wie der Zustand(0/1) der Steuerung ist:

    Code
    testvdr:~# ./test.sh
    1
    220 htpc SVDRP VideoDiskRecorder 1.4.7-ext34-sc; Mon Nov  9 13:09:41 2009
    250 Message queued
    221 htpc closing connection
    0
    220 htpc SVDRP VideoDiskRecorder 1.4.7-ext34-sc; Mon Nov  9 13:09:47 2009
    250 Message queued
    221 htpc closing connection
    testvdr:~#

    Habe nur noch ein echo $VALUE eingefügt, damit ich an der Console den Zustand erkennen kann.

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

  • Zitat

    Original von Papsi
    Wenn ich es gegen die hier tausche:

    Code
    [ "x$VALUE" = "x0" ] && svdrpsend.pl MESG "blabla Text1....."
      [ "x$VALUE" = "x1" ] && svdrpsend.pl MESG "blabla Text2....."

    bekomme ich diese Ausgabe, aber keine Meldungen am TV

    Code
    testvdr:~# ./test.sh
    1
    1
    1
    testvdr:~#


    Das deutet darauf hin, dass die Ausgabe des Befehls gar nicht in gespeichert wird und $VALUE leer ist. Es stellt sich die Frage, wo die einsen herkommen.



    $(...) bewirkt das gleiche wie `...`. $(`...`) führt also die Ausgabe des Befehls aus. Wenn der Befehl aber keine Ausgabe hat, dürfte das die Meldung ": command not found" erklären.

    Give root password for maintenance (or type Control-D to continue): _

  • Egal ob ich
    if [ $VALUE = "1" ]; then
    oder
    if [ x$VALUE = "x1" ]; then


    eingebe, es kommt immer:

    Code
    testvdr:~# ./test.sh
    1
    1
    0
    0
    testvdr:~#

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

  • Wenn ich aber mit
    echo $VALUE
    den Wert abfrage, dann zeigt er mir ja die Einsen und Nullen an(Siehe ein Beitrag weiter oben)

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

  • Zitat

    Original von Papsi
    if [ $VALUE = "1" ]; then


    Code
    if [ "$VALUE" = "1" ]; then


    Gerald


    HP Proliant MicroServer Gen8, Xeon E3-1230, 12 GB RAM, 3xWD red 2TB im RAID 5, 2xSundtek MediaTV Home DVB-C/T, L4M TWIN-C/T, Ubuntu Server 14.04.1, Plex Media Server
    Samsung UE55H6470

  • @ gda
    Das gleich wie vorher, es wird nur der Status angezeigt, keine Ausgaben.

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

  • Hola señor,


    vielleicht probierst Du es mal ganz klassisch, d.h. nicht zuviel in eine Anweisung/Zeile zu packen.
    Ist zwar langweilig, aber vielleicht findet man dann leichter den Störenfried ;)


    Beispiel:


    Viel Erfolg.

    Ich bin verantwortlich für das, was ich schreibe, nicht für das, was Du verstehst!

  • Zitat

    "Isch ab keine Ahnung, wie des passiera konnt."


    egal ob 1 oder 0

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

  • Nun sollte man aber noch wissen was:
    echo "check: >$VALUE<";
    in der console ausgibt ...


    P.S. Ich denke hinter dem Zeichen kommt noch irgendwas, dann koennte diese if Abfrage zum Erfolg fuehren:

    Code
    ...
    if [ "$(echo "getport 1" | nc $IP $PORT 2>&1 | grep "1")" != ""  ]; then
    ...

Jetzt mitmachen!

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