Hallo,
vielleicht steh ich einfach nur auf dem Schlauch.
Ich versuche mittels eines PHP Scripts den State eines Dummys zu verändern. Dazu verbinde ich mich im Script über die Telnet Schnittstelle, setze meinen Befehl ab und beende.
Das ganze funktioniert von der Konsole auch wunderbar.
Im Script aber nicht.
Hab ich nen Denkfehler?
$fp=fsockopen("127.0.0.1","7072");
if($fp){
$i = fputs($fp,"set dummydevice on"); #$i ist hiernach 18
$i = fputs($fp,"exit"); # hiernach ist $i 4, also wurden die Befehle abgesetzt
fclose($fp);
}
der Code läuft einwandfrei durch, aber der State des Devices ändert sich nicht.
verbinde ich mich per
telnet 127.0.0.1 7072
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
set dummydevice off
exit
Connection closed by foreign host.
klappt es wunderbar.
Hm das hatte ich auch schon bei einem Shell Zugriff via Telnet....mir fällt aber gerade die Loesung nicht ein, aber ich glaube es war ein Laufzeitproblem das die Telnet Verbdinung zu schnell geschlossen wurde oder Dur noch ein Return oder ähnliches schicken musst! Sorry Alzheimer....am besten mal googlen!
Sehr guter Tipp, vielen Dank. Ein beherztes Sleep nach Verbindung und Absetzen des Befehles sowie den Befehl um CRLF erweitern (wobei LF wahrscheinlich schon reichen würde...) und jetzt geht es:
$fp=fsockopen("127.0.0.1","7072");
sleep(2);
if($fp){
$i = fputs($fp,"set dummydevice on".chr(10).chr(13));
sleep(2);
$i = fputs($fp,"exit".chr(10).chr(13));
sleep(2);
fclose($fp);
}
Freut mich das es klappt. Markierst du den Thread bitte noch als gelöst!? Vielen Dank!