[behoben] IPS_Ping()

Bug oder Feature?

Wenn der Host bei Sys_Ping() nicht anpingbar ist, da abgeschaltet oder nicht vorhanden, wird das Script an dieser Stelle abgeschossen und nachfolgende Befehle nicht ausgeführt.

Kann man ggf. ein Try/Catch drumbauen und z.B. im Falle eines Fehler einen Leestring zurückgeben?

Gruß
Olli

Habe ich da einen Befehl übersehen?

Ich nutze den „normalen“ Ping:

$ping = exec("cmd.exe /c ping -n 1 192.168.178.30");

$ping =trim($ping);          // trim entfernt Leerzeichen am Anfang
$value_ms=substr($ping,0, 1);
echo "LCN request: ",$value_ms.chr(10);
if ($value_ms=="M")         //1.Zeichen = M
   //$ping == "Minimum = 0ms, Maximum = 0ms, Mittelwert = 0ms"
   {
   SetValueBoolean("IRtrans_ping", true);            //ping erfolgreich
   }
if ($value_ms=="P")//and ($StdPC_on==1))         //1.Zeichen = P
  //($ping == "Pakete: Gesendet = 4, Empfangen = 0, Verloren = 4 (100% Verlust),")
   {
   SetValueBoolean("IRtrans_ping", false);          //ping nicht erfolgreich

… heraus kommt eine Variable die True oder False für das Netzwerkgerät liefert und auch in anderen Skripten verwendbar ist.

Der Vorteil von Sys_Ping() ist u.a. dass du die Timeouts besser auf das gegebene Problem einstellen kannst.

Gruss
Olli

Hi Olli,
hättest du mal ein Beispiel für mich?
Der Befehl taucht für mich weder in der Doku noch in der Befehlsreferenz (strg-space) auf …

Die ständigen cmd-Aufrufe stören mich schon etwas.

SORRY! Der Befehl heisst Sys_Ping() und ist in der strg-space Liste drin.

ich ändere das mal auch weiter oben… :rolleyes:

Gruss
Olli

… jetzt kann ich auch lesen :smiley:

$ping1= Sys_Ping('192.168.178.30', 1, 1) ;

bringt mir jetzt ein
Response from host 192.168.178.30 in 2 ms
oder
Timed out
als String zurück.

Auch mit „wenig PHP-Ahnung“ kann ich jetzt den String weiterverarbeiten (wie oben / etwas geändert).

Mir hat deine Frage geholfen.
Willst du mehr?

Tja, sehr interessant… bei mir kommt auf dem Server komischerweise kein „Timed out“ sondern das Skript wird einfach an dieser Stelle beendet :frowning:

Insofern will ich nicht mehr, sondern es nur so haben wie du es beschreibst :slight_smile:

Seltsam, seltsam… woran das nu liegt…

grübelnd
Olli

Fix im LiveUpdate.

paresy

Hallo Uwe,

du pingst damit das IRTrans Teil an. Wozu?

Ich habe das Problem, dass beim Hochfahren meines Rechners der IRTransServer (Software) langsamer ist als IPS, beides im Autostart. Folge: Fehler im WinLIRC Modul. Jetzt habe ich den Autostart von IPS um einige Sekunden verzögert, dann klappt es.

Gruss
TK6

Ehhmm … geht ganz weit aber - winlirc modul auch als windows dienst anlegen lassen und IPS abhänglich von das starten dieser dienst abhänglich gemacht -> problem weg.
(Uber ‚dependences‘ in die windows dienst fenster einstellen)

Das heisst naturlich IPS als dienst, winlirc als dienst usw… und geht vielleicht zu weit

Bei mir klappts so.

PS: wie verzögerst du das starten des IPS in start-up ??

@Fredje: … irgendwo in den Tiefen dieses Forums schlug jemand eine Batch-Datei im Startup vor. Mit 2.0 werde ich wohl auch mal in die Dienste schauen … :smiley:

Im gezeigten Skript ist es der IRtrans, der auf „Funktion“ abgefragt wird. Das Gerät soll im Wohnzimmer an den abschaltbaren Steckdosen der Standby-Geräte landen. Bevor es sich nicht online zeigt, brauche ich keine Befehle dorthin zu schicken …

Das Spielchen geht aber auch z.B. mit der SqueezeBox. Wenn die offline ist, gehen evtl. Meldungen ins Nirwana.

Ich mache das aber auch mit meinen (automatisch geschalteten) PC’s. Mein WOL geht nicht immer beim ersten Aufruf - und wird solange wiederholt, bis der Rechner sich meldet.

Das Skript ist immer gleich, lediglich die IP und Variable heißen halt anders.

hier ist der Thread:

Wg. der Software muss ich nochmal nachsehen.