[PHP] Niet mogelijk om ICMP verbinding te maken ?

Pagina: 1
Acties:

  • Koffie
  • Registratie: Augustus 2000
  • Laatst online: 01-09 17:48

Koffie

Koffiebierbrouwer

Braaimeneer

Topicstarter
Ik ben nu langzaam aan bezig om mijn Perl scripts om te zetten naar PHP.

Echter kan ik niets vinden over een ICMP ping naar een host.
Alle PING sctips die ik tot nu toe gevonden heb zijn gebasseerd op het volgende:

- Leg een verbinding naar port80, als dat lukt is de server online

- maak gebruik van het PING commando van het OS, en print de results hiervan.

Echter dat is dus niet wat ik zoek, ik wil keihard over ICMP een verbinding leggen.
Is dat uverhaupt mogelijk in PHP?

Op dit moment gebruik ik in Perl het volgende:
code:
1
2
3
4
5
6
         require net::ping;
         $host= $resolved_name;
        $p = Net::Ping->new(icmp);
        $status = "<b>BTW: $host reageerd actief op een ping.\n</b>" if $p->ping($host);
        if ($status eq "") { $status = "$host reageerd NIET op een ping.\n"; }
        $p->close();

Braaikamer - Smoke&BBQ


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

ICMP _verbinding_ ???

Koffie!
Jij bent moderator PNS!!!!
Wat doe je me aan?!?!

:P
Magoed, icmp kent dus geen verbindingen.

Verder zou ik niet weten of php zo 'raw' met netwerk devices overweg kan dat het zelf kan pingen/etc...
Ik ben bang van niet iig.

  • Zwelgje
  • Registratie: November 2000
  • Laatst online: 17-08 09:02
Op zondag 14 juli 2002 14:52 schreef ACM het volgende:
ICMP _verbinding_ ???

Koffie!
Jij bent moderator PNS!!!!
Wat doe je me aan?!?!

:P
Magoed, icmp kent dus geen verbindingen.

Verder zou ik niet weten of php zo 'raw' met netwerk devices overweg kan dat het zelf kan pingen/etc...
Ik ben bang van niet iig.
het kan hem vergeven worden, volgens mij is ie er vandaag niet helemaal bij, (zekers het bed verplaatst ofzo en dat ie nu aan de verkeerde kant moest uitstappen :?)

zie ook: [topic=549324/1/25]

:)

A wise man's life is based around fuck you


  • Koffie
  • Registratie: Augustus 2000
  • Laatst online: 01-09 17:48

Koffie

Koffiebierbrouwer

Braaimeneer

Topicstarter
Ach, voor mij blijft het een verbinding :+

Maar punt is dus, dat PHP van zichzelf blijkbaar geen ICMP kent :?

Braaikamer - Smoke&BBQ


  • igmar
  • Registratie: April 2000
  • Laatst online: 23-08 16:57

igmar

ISO20022

- maak gebruik van het PING commando van het OS, en print de results hiervan.

Echter dat is dus niet wat ik zoek, ik wil keihard over ICMP een verbinding leggen.
Is dat uverhaupt mogelijk in PHP?
ICMP is geen verbinding, maar een stateless onderdeel van IP.

De enige manier om ICMP pakketten te verzenden is gebruik te maken van raw sockets, iets wat PHP niet ondersteund (wat verder logisch is, aangezien het root privs vereist).

Het simpelste is gewoon het ping commando runnen, zelfs indien raw sockets wel mogelijk zijn is het vrij veel werk vrees ik.

  • Koffie
  • Registratie: Augustus 2000
  • Laatst online: 01-09 17:48

Koffie

Koffiebierbrouwer

Braaimeneer

Topicstarter
ICMP is geen verbinding, maar een stateless onderdeel van IP.
Was ik inmiddels alweer achter :P
De enige manier om ICMP pakketten te verzenden is gebruik te maken van raw sockets, iets wat PHP niet ondersteund (wat verder logisch is, aangezien het root privs vereist).
Ik vind dat nou niet echt een logische benadering. Onder Perl lukt dit zonder problemen, en het root-recht snap ik ook niet echt helemaal :?
Het simpelste is gewoon het ping commando runnen, zelfs indien raw sockets wel mogelijk zijn is het vrij veel werk vrees ik.
Het commando runnen is bij mij niet mogelijk.
Zeer jammer dat een relatief standaard iets van Perl totaal onmogelijk blijkt in PHP ...

Braaikamer - Smoke&BBQ


  • Mickman
  • Registratie: Juni 2001
  • Laatst online: 29-03 18:11
Het gebruik van sockets in php is wel degelijk mogelijk!!!

gebruik hiervoor de functie fsockopen()

  • Grum
  • Registratie: Juni 2001
  • Niet online
Op maandag 15 juli 2002 09:24 schreef Mickman het volgende:
Het gebruik van sockets in php is wel degelijk mogelijk!!!

gebruik hiervoor de functie fsockopen()
het verschil tussen socket calls en lowlevel socket calls is ongeveer 2 olifanten ;)

  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 30-08 17:59

Gerco

Professional Newbie

Op maandag 15 juli 2002 09:24 schreef Mickman het volgende:
Het gebruik van sockets in php is wel degelijk mogelijk!!!
Like, d0h!

Wat hij wil is geen TCP socket verbinding, maar hij wil een ICMP ping zenden met PHP. Ik denk alleen niet dat dat mogelijk is. Wel als je er een .so voor maakt lijkt me, maar standaard niet.

Al als pingen root privs vereist, waarom kan ik dan gewoon als user een servert pingen? Je hebt alleen root privs nodig voor een ping flood.

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


  • Koffie
  • Registratie: Augustus 2000
  • Laatst online: 01-09 17:48

Koffie

Koffiebierbrouwer

Braaimeneer

Topicstarter
Uiteraard zou je gebruik kunnen maken van de door het OS aangeboden Ping commando.
Echter dit is gewoon voor het probleem weglopen (nl. een ICMP req. zenden).

Komt nog het probleem erbij, dat de exec() functie op dit moment niet functioneert in de PHP release die ik draai.

Braaikamer - Smoke&BBQ


  • bartvb
  • Registratie: Oktober 1999
  • Laatst online: 26-08 16:09
Gerco:

$ls -al `which ping`
-rwsr-xr-x 1 root root 35192 Apr 18 23:40 /bin/ping

Verwijderd

Natuurlijk is het mogelijk.

Ik denk dat het het mooiste is om zelf een module voor php te schrijven (zelf je phpingebakken functies maken, zoals mail() enzow), daarin zal je api calls moeten maken.

Ofwel, maak je borst maar nat.

Verwijderd

Trouwens, perl doet dat eigenlijk ook, 'require net::ping;'.

Dat is dus al een stukje voorgeschreven code. (:P)

  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 30-08 17:59

Gerco

Professional Newbie

Op maandag 15 juli 2002 15:41 schreef bartvb het volgende:
$ls -al `which ping`
-rwsr-xr-x 1 root root 35192 Apr 18 23:40 /bin/ping
[gerco@vulcanus gerco]$ ping 127.0.0.1
PING 127.0.0.1 (127.0.0.1) from 127.0.0.1 : 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=0 ttl=255 time=125 usec

--- 127.0.0.1 ping statistics ---
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max/mdev = 0.125/0.125/0.125/0.000 ms
[gerco@vulcanus gerco]$ ping -f 127.0.0.1
ping: Operation not permitted
[gerco@vulcanus gerco]$

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


  • GiLuX
  • Registratie: Juni 1999
  • Laatst online: 12-11-2025
dit werkt bij mij:
http://matt.phptest.free.fr/phpping/

staat nix bijzonders in dat dit:
code:
1
2
3
4
5
6
7
8
9
10
function PHPing($cible,$pingFile){
exec("ping -a -n 1 $cible >$pingFile", $list); 
$fd = fopen($pingFile, "r");
while(!feof($fd))
{
$ping.= fgets($fd,256);
}
fclose($fd);
return $ping;
}

"I disagree with what you are saying, but I will defend to the death your right to say it." -- not clear who


  • Zwelgje
  • Registratie: November 2000
  • Laatst online: 17-08 09:02
Op maandag 15 juli 2002 20:16 schreef GiLuX het volgende:
dit werkt bij mij:
http://matt.phptest.free.fr/phpping/

staat nix bijzonders in dat dit:
code:
1
2
3
4
5
6
7
8
9
10
function PHPing($cible,$pingFile){
exec("ping -a -n 1 $cible >$pingFile", $list); 
$fd = fopen($pingFile, "r");
while(!feof($fd))
{
$ping.= fgets($fd,256);
}
fclose($fd);
return $ping;
}
ja maar die doet gewoon 'exec ("ping -a -n 1 etc/etc) die maakt dus gewoon gebruik van de ping van het OS.. en dat wil ie nu niet ;)

A wise man's life is based around fuck you


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op maandag 15 juli 2002 20:20 schreef zwelgje het volgende:
ja maar die doet gewoon 'exec ("ping -a -n 1 etc/etc) die maakt dus gewoon gebruik van de ping van het OS.. en dat wil ie nu niet ;)
Schijnt niet zo lekker te werken op netware...
Hij wil het wel :)

  • GiLuX
  • Registratie: Juni 1999
  • Laatst online: 12-11-2025
en in pear?

kwam dit tegen:
http://marc.theaimsgroup.com/?l=php-dev&m=102234565430099&w=2

zal allemaal nog wel experimenteel zijn.
blijf het vaag vinden dat pear gebeuren maar hier hebben ze het over Net_ping 1.0

remote list?

"I disagree with what you are saying, but I will defend to the death your right to say it." -- not clear who


  • Koffie
  • Registratie: Augustus 2000
  • Laatst online: 01-09 17:48

Koffie

Koffiebierbrouwer

Braaimeneer

Topicstarter
Op maandag 15 juli 2002 20:29 schreef ACM het volgende:

[..]

Schijnt niet zo lekker te werken op netware...
Hij wil het wel :)
Wrijf het er maar weer in :P
De exec functie werkt idd nog niet op PHP/NetWare, maar dat zal in de final verholpen zijn.
Dan nog heb ik het probleem dat ik de charbased TPING.NLM niet kan 'grabben'.
Ik kan dus wel pingen, maar de results zijn niet te achterhalen.

Eventueel via een link naar Perl een net::ping doen, zou mogelijk zijn.
Echter wil ik juist van die rotte Perl implementatie af omdat net::ping er gemiddel een seconde of 15 over doet pom te pingen.

Ik heb naar dat pear gekeken, maar installen/downloaden kan alleen onder een *nix systeem.
Voor windows staat er niets, laat staan voor * Koffie :o

Anyway .. voor ideen houd ik me aanbevolen (maar zelf een of ander ping ies schrijven is te hoog voor me gegrepen ../ vraag maar aan ACM :P )

Braaikamer - Smoke&BBQ


Verwijderd

Als je zelf de raw sockets zou schrijven, zou je een leuke ping-chatbox kunnen maken. Er wordt toch alleen maar onzin verstuurd, daar kun je ook je messages in zetten. Protocolletje
bedenken en klaar is kees.

en trouwens, werkt system() wel?

  • Koffie
  • Registratie: Augustus 2000
  • Laatst online: 01-09 17:48

Koffie

Koffiebierbrouwer

Braaimeneer

Topicstarter
Zelf raq sockets enzo scrijven lijkt me een beetje een 20 jarig plan bij mij ;)
En system() werkt ook niet nee (een extern program aanroepen is nog niet geimplementeerd in deze PHP release).

Braaikamer - Smoke&BBQ


  • igmar
  • Registratie: April 2000
  • Laatst online: 23-08 16:57

igmar

ISO20022

Op maandag 15 juli 2002 20:03 schreef Gerco het volgende:
[igmar@wrkst igmar]$ ls -l /bin/ping
-rwxr-xr-x 1 root root 22620 2001-01-16 /bin/ping
[igmar@wrkst igmar]$ ping 10.1.1.1
ping: icmp open socket: Operation not permitted

Nu duidelijk ? Je kan als gewone user geen raw sockets aanmaken. maw : PHP kan dat zeker niet, tenzij je PHP als root draait, wat vanuit Apache (standaard) niet kan.

  • Koffie
  • Registratie: Augustus 2000
  • Laatst online: 01-09 17:48

Koffie

Koffiebierbrouwer

Braaimeneer

Topicstarter
Op donderdag 18 juli 2002 16:42 schreef igmar het volgende:

[..]

[igmar@wrkst igmar]$ ls -l /bin/ping
-rwxr-xr-x 1 root root 22620 2001-01-16 /bin/ping
[igmar@wrkst igmar]$ ping 10.1.1.1
ping: icmp open socket: Operation not permitted

Nu duidelijk ? Je kan als gewone user geen raw sockets aanmaken. maw : PHP kan dat zeker niet, tenzij je PHP als root draait, wat vanuit Apache (standaard) niet kan.
Ik weet niet of het op mij slaat, maar zoals eerder gezeg; ik draai geen Linux.
Dus het hele root verhaal gaat hier niet op.
Als er al iets te vergelijk valt, dan draait Apache/PHP bij mij als 'root'
In mijn geval als system/console

Braaikamer - Smoke&BBQ

Pagina: 1