"We are back" « oc.at

Php Exec vs System

ColdFire 09.12.2010 - 15:54 1034 6
Posts

ColdFire

Addicted
Avatar
Registered: Feb 2005
Location: OÖ / Linz
Posts: 360
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:

Code: PHP
<?	
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

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
was passiert wenn ich da als IP "`rm -Rf *`" angeb...?

Was meinst du mit "Kann ich den output irgendwie wegdrehen."?

mat

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25517
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

Administrator
GNUltra
Avatar
Registered: Dec 2000
Location: ~
Posts: 12127
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
Avatar
Registered: Feb 2005
Location: OÖ / Linz
Posts: 360
Zitat von watchout
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 :-)

Zitat von COLOSSUS
Meine Frage also: was willst du genau erreichen? :)

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

Administrator
GNUltra
Avatar
Registered: Dec 2000
Location: ~
Posts: 12127
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
Registered: Jun 2005
Location: Germany
Posts: 2951
Oder Nagios, teilweise in Verbindung mit SNMP. Gibt es doch alles schon fertig und frei, warum das Rad neu erfinden?
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz