script terminieren wenn ping erfolgreich

Kann mir jemand auf die Schnelle helfen? Meine Lichter sind von Bewegungsmelder kontrolliert. Sie sollten aber still stehen (d.h. der getriggerte script sollte beendet werden) wenn das Home Theater läuft.

Ich denke, das geht am einfahcsten wenn der Script prüft, ob die IP-Addressen der HTPC-Anlage erfolgreich gepingt werden können. Ist das zweckmässig, oder gibt es eine bessere Lösung, und wie implementiere ich das am besten?

Was weniger gut ist am Ping ist die zwangläufige Wartezeit, welche unerwünscht ist. Vielleicht eine bessere Variante ist, die HTPC-Geräte alle Minuten zu pingen und eine Variable entsprechend zu setzen, welche dann vom Beleuchtung-Script abgefragt wird?

Ich lese alle Minute den Status der Ports von meinem Switch, und alle min den online Status der Geräteliste meiner Fritzbox (wichtig z.b. für die WLAN Geräte).
Entsprechende Variablen bilden somit den Zustand an/aus ab, welchen man im Licht-Script abfragen könnte.
Schneller als ein Ping im Licht-Script, dafür nicht immer gleich aktuell.
Perfekt wäre es wenn sich deine HTPC Geräte aktiv an IPS an und anmelden. Z.B. mit einem JSON request.
Michael

Danke, tönt viel versprechend. Wie fragst du die Ports ab? Snmp? Hättest du mir ein Script? Mein switch ist ein Lancom.

Ich glaube das war in dem Beitrag
http://www.ip-symcon.de/forum/showthread.php?t=12427
Wobei du am besten erstmal mit einer anderen Software (mir ist der Name gerade entfallen) schaust was der Switch so an Daten liefern kann.
Ich schau morgen mal nach was ich da genutzt hatte um die OIDs rauszufinden.
Und kann auch mein Script mal online stellen, was allerdings auf meinen HP-Switch abgestimmt ist.
Michael

Und doch wieder gefunden:
Mit the Dude hatte ich das für meinen Switch getestet.
Siehe Beitrag von Flobo http://www.ip-symcon.de/forum/threads/12427-Switch-%C3%BCber-SNMP-auslesen-und-saubere-Verarbeitung-Wie?p=196042#post196042

Und ganz am Ende stelle ich mal mein Script rein, welches statt String-Variablen nun Bool und Int nutzt, welche du in deiner Lichtsteuerung enfach abfragen kannst.

Michael

besten Dank, das war bereichernd! Die Aufgabe ist gelöst, und zwar mit minimalen Effort. Ich war übrigens angenehm überrascht bei der Fetststellung, dass die OID der jeweiligen Ports beim Lancom identisch ist. Also konnte ich den script unverändert übernehmen. Einziger Unterschied: die Bool-States für UP und DOWN sind beim Lancom vertauscht. Jedenfalls, vielen herlichen Dank. Jetzt kann ich mit den Kindern das ganze Wochenende Filme anschauen, ohne dass das Licht ständig angeht!

hab mich zu früh gefreut. Der „ausgeschaltete“ HTPC ist im sleep mode, der link ist immer up. Muss ja auch sein, damit es mit einem Magic Packet weckbar ist. Also muss ich doch den Zustand des Computers abfragen. Wie geht das am besten?

Hallo.

Hat der Rechner wenn er online ist einen Port z.b. 80 (oder welchen auch immer) geöffnet? Du könntest prüfen ob der offen ist.

   @$s = fsockopen("xxx.xxx.xxx.xxx", 80, $errno, $errstr, 1);
   if (!$s) {
      echo "Rechner Offline";
   }
   else {
      fclose($s);
      echo "Rechner Online";
   }

Dann nimm den PortSpeed.
Normalerweise ist der Port auf 10MBit wenn der Rechner aus/standby ist. Und an halt 100/1000.
Michael

port prüfen geht, vielen dank. Und portspeed geht vermutlich auch. Ich danke Euch beiden herzlich. Wenn ich sehe, wie schnell und sachkundig Hilfe hier angeboten wird, da wird mir klar, warum Al Gore das Internet erfunden hat :-).