Php Exec vs System
ColdFire 09.12.2010 - 15:54 1034 6
ColdFire
Addicted
|
Guten tag! Ich bin auf der suche nach einer Lösung im punkto Ping dein system und sag es ob der client online/ offline ist Folgende Lösung ist mir dazu eingefallen: <?
if($exec) exec("ping $ip -n 1", $array, $return);
else system("ping $ip -n 1", $return); //fuer windoof systeme ergibt haesslich ausgabe
if($return)
echo "<td> ist <font color=FF0000> <blink> offline </blink> </font><td>";
else
echo "<td> ist <font color=00FF00> online</font></td>";
?>
Wie im Comment schon beschrieben habe ich eine Ausgabe der Ping Statistik. Danach wird meine Tabelle richtig befüllt. Kann ich den output irgendwie wegdrehen. Gibt es viell eine andere lösung die das selbe Ergebnis bringt ? (fsockopen benötige ich nicht da ich keine ports abfragen will) lg ColdFire
|
watchout
Legendundead
|
was passiert wenn ich da als IP "`rm -Rf *`" angeb...?
Was meinst du mit "Kann ich den output irgendwie wegdrehen."?
|
mat
AdministratorLegends never die
|
Schöner und sicherer wäre es, wenn du das ICMP-Protokoll direkt implementierst. Such mal "PHP ICMP" in Google, da sollte einiges kommen.
System und exec sollten eigentlich via PHP nicht aufrufbar sein, da sie sonst einigen Schaden anrichten können. Oder der Webserver/Webhost nutzt einen eigenen, gejailten, rechtemäßig sehr eingeschränkten User. Dann sollte PHP aber auch via fastcgi eingebunden sein.
|
COLOSSUS
AdministratorGNUltra
|
SOCK_RAW braucht root-Rechte, bzw. entsprechende Capabilities - zumindest auf POSIX-OS. Deswegen ist ping auf den allermeisten GNU/Linux-Distros immer noch als setuid-root Binary installiert. Ich fuerchte, selber wird er sich die Pakete also als unprivilegierter Webserver-User mit PHP nicht basteln koennen. Sich auf ICMP ECHo zu verlassen um zu bestimmen, ob ein Host online oder offline ist, ist aber ohnehin zu schwach, als dass ich mich darauf verlassen wollen wuerde. Meine Frage also: was willst du genau erreichen?
|
ColdFire
Addicted
|
Was meinst du mit "Kann ich den output irgendwie wegdrehen."? Wegdrehen = info ist für mich nicht wichtig :-) also weg damit! Der Remove befehl wird unter windoof sicher nicht funktionieren und unter linux auch nicht da du ja da mit dem apache user arbeitest. Danke aber für den hilfreichen post. @ Mat Ich werde mal danach googlen. Ist mir auch klar das es keine schöne lösung ist aber darum frage ich ja :-) Meine Frage also: was willst du genau erreichen? ![:)](/images/smilies/smile.gif) Es geht mir nur darum eine liste in der DB zu haben div clients und drucker etc... und ich will nur wissen ob die alive sind oder nicht. Mehr info brauche ich im mom nicht.
|
COLOSSUS
AdministratorGNUltra
|
Dann wuerde ich dafuer sorgen, dass die Info zu dir kommt - nicht, dass du dir die Info _vielleicht_ besorgen kannst. SNMP ist das Stichwort.
|
Crash Override
BOfH
|
Oder Nagios, teilweise in Verbindung mit SNMP. Gibt es doch alles schon fertig und frei, warum das Rad neu erfinden?
|