Gerade verzweifle ich an einem sehr merkwürdigen Problem. Ich habe in PHP einen Anrufmonitor geschrieben, der die NCID-Daten des Routers per Telnet ausliest und als schöne Webseite zurückgibt. Dazu habe ich zunächst die ausführbare Datei /usr/bin/fonlist angelegt:
Wenn ich nun als Root auf der Kommandozeile 'fonlist' ausführe, erhalte ich eine Datei /home/pi/fonlist mit ungefähr folgendem Inhalt:
(Die Telefonnummern habe ich natürlich leicht anonymisiert.)
Das PHP-Skript ruft nun per Shell-Exec
auf und wandelt die zurückerhaltenen Daten nun in eine gut lesbare und optisch ansprechende XHTML-Anrufliste um. Soweit die Theorie.
Nun aber zu meinem Problem: Solange ich 'fonlist' persönlich von der Kommandozeile aus aufrufe, enthält /home/pi/fonlist alle Anrufe. Sobald ich 'fonlist' allerdings durch ein PHP-Skript aufrufen lasse, werden Einträge verschluckt. Mal erhalte ich nur drei zurück, mal sieben, manchmal gar keine, ganz selten jedoch nur alle. Das gleiche Phänomen tritt auf, wenn ich 'fonlist' minütlich durch Cron laufen lasse, was ich als Workaround auch schon probiert habe.
Wie kann es sein, daß derselbe Befehl immer funktioniert, wenn ich ihn selbst an der Kommandozeile ausführe, aber fast nie, wenn er von PHP oder Cron ausgeführt wird?
Code:
telnet 192.168.1.1 3333 | grep CIDLOG > /home/pi/fonlist | sleep 0.5 | pkill telnetWenn ich nun als Root auf der Kommandozeile 'fonlist' ausführe, erhalte ich eine Datei /home/pi/fonlist mit ungefähr folgendem Inhalt:
Code:
CIDLOG: *DATE*03012015*TIME*2005*LINE*02151xxxx76*NMBR*0172xxxx080*MESG*NONE*NAME*NO NAME*
CIDLOG: *DATE*04012015*TIME*1456*LINE*02151xxxx50*NMBR*0228xxxx333*MESG*NONE*NAME*NO NAME*
CIDLOG: *DATE*04012015*TIME*1659*LINE*02151xxxx50*NMBR*0215xxxx281*MESG*NONE*NAME*NO NAME*
CIDLOG: *DATE*04012015*TIME*1732*LINE*02151xxxx50*NMBR*0172xxxx257*MESG*NONE*NAME*NO NAME*
CIDLOG: *DATE*06012015*TIME*1203*LINE*02151xxxx50*NMBR*0162xxxx080*MESG*NONE*NAME*NO NAME*
CIDLOG: *DATE*06012015*TIME*1446*LINE*02151xxxx50*NMBR*Anonym*MESG*NONE*NAME*NO NAME*
CIDLOG: *DATE*06012015*TIME*1522*LINE*02151xxxx50*NMBR*Anonym*MESG*NONE*NAME*NO NAME*
CIDLOG: *DATE*06012015*TIME*1750*LINE*02151xxxx50*NMBR*0228xxxx21*MESG*NONE*NAME*NO NAME*
CIDLOG: *DATE*06012015*TIME*2019*LINE*02151xxxx50*NMBR*0228xxxx21*MESG*NONE*NAME*NO NAME*
CIDLOG: *DATE*06012015*TIME*2118*LINE*02151xxxx50*NMBR*0228xxxx21*MESG*NONE*NAME*NO NAME*
CIDLOG: *DATE*06012015*TIME*2145*LINE*02151xxxx50*NMBR*0228xxxx21*MESG*NONE*NAME*NO NAME*
(Die Telefonnummern habe ich natürlich leicht anonymisiert.)
Das PHP-Skript ruft nun per Shell-Exec
Code:
$fonmon = shell_exec('fonlist; cat /home/pi/fonlist');auf und wandelt die zurückerhaltenen Daten nun in eine gut lesbare und optisch ansprechende XHTML-Anrufliste um. Soweit die Theorie.
Nun aber zu meinem Problem: Solange ich 'fonlist' persönlich von der Kommandozeile aus aufrufe, enthält /home/pi/fonlist alle Anrufe. Sobald ich 'fonlist' allerdings durch ein PHP-Skript aufrufen lasse, werden Einträge verschluckt. Mal erhalte ich nur drei zurück, mal sieben, manchmal gar keine, ganz selten jedoch nur alle. Das gleiche Phänomen tritt auf, wenn ich 'fonlist' minütlich durch Cron laufen lasse, was ich als Workaround auch schon probiert habe.
Wie kann es sein, daß derselbe Befehl immer funktioniert, wenn ich ihn selbst an der Kommandozeile ausführe, aber fast nie, wenn er von PHP oder Cron ausgeführt wird?
0 commentaires:
Enregistrer un commentaire