L4ss3 Skrevet 11. september 2008 Del Skrevet 11. september 2008 Hei! Skulle hatt et script som pinger noen iper som jeg har i en .txt fil hvert kvarter. Så den svarer med enten oppe, eller nede hvis den ikke svarer. Noe lignende dette: http://www.ph-status.com/ Vil altså ikke at den pinger alle når man går inn på siden, men at den kun pinger hver IP én gang hvert kvarter. Er snakk om omtrent 150 IPer. Noen som har et forslag? (: Lenke til kommentar
trrunde Skrevet 11. september 2008 Del Skrevet 11. september 2008 funksjonen exec() kan brukes for å pinge. file_get_contents for å lese inn fila med ipadresser Lenke til kommentar
OISNOT Skrevet 11. september 2008 Del Skrevet 11. september 2008 Må det gjøres i php? Det kan gjøres på en annen måte i linux. Kanskje ikke enklere, men det er en annen måte... Du kan enkelt lage en php fil som looper over ip adressene med passthru while ($ip = $iterator->getNext()) { passthru("ping -c 3 -p 3 -n -q $ip"); } og legg til i /etc/crontab at den skal kjøres hvert kvarter 0,15,30,45 * * * * www-data php -f /path/script.php > /path/script.txt Deretter kan du lese og behandle resultatet uavhengig om noen besøker siden eller ikke. Du bør kanskje cache resultatet av parsingen (og sammenligne cache tiden med modifikasjonstiden på resultatsfilen). 2+ script vil ikke forsøke å kjøre pingene samtidig. En eller flere bruker vil ikke måtte vente mens du pinger alle serverne. Men denne vil kjøre hvert 15 min selv om noen besøker siden eller ikke. Lenke til kommentar
L4ss3 Skrevet 11. september 2008 Forfatter Del Skrevet 11. september 2008 Takk for forslag! Ikke dumt det siste der nei, men serveren kjører desverre windows. Har testet litt med batch og har fått den til å skrive ut dette til en fil: AP: xx.xxx.x.x AP000a Siste svar: 21:48:19,57 Status: oppe AP: xx.xxx.x.x AP000b Siste svar: 21:48:26,60 Status: nede AP: xx.xxx.x.x AP000b Siste svar: 21:48:30,00 Status: oppe AP: xx.xxx.x.x AP000b Siste svar: 21:48:33,37 Status: oppe AP: xx.xxx.x.x AP000a Siste svar: 21:48:36,75 Status: oppe Men skulle gjerne hatt det litt mer oversiktlig når jeg skal se det på websia. Klarte ikke å få det inn i en tabell heller =\ Lenke til kommentar
ThorB Skrevet 12. september 2008 Del Skrevet 12. september 2008 Takk for forslag!Ikke dumt det siste der nei, men serveren kjører desverre windows. Har testet litt med batch og har fått den til å skrive ut dette til en fil: AP: xx.xxx.x.x AP000a Siste svar: 21:48:19,57 Status: oppe AP: xx.xxx.x.x AP000b Siste svar: 21:48:26,60 Status: nede AP: xx.xxx.x.x AP000b Siste svar: 21:48:30,00 Status: oppe AP: xx.xxx.x.x AP000b Siste svar: 21:48:33,37 Status: oppe AP: xx.xxx.x.x AP000a Siste svar: 21:48:36,75 Status: oppe Men skulle gjerne hatt det litt mer oversiktlig når jeg skal se det på websia. Klarte ikke å få det inn i en tabell heller =\ du kan gjøre det samme i windows. i stedenfor crontab kan du bruke schedule.. bare pek på php exe fila med path til php fila Lenke til kommentar
itsmebth Skrevet 12. september 2008 Del Skrevet 12. september 2008 <?php // Made by ITSBTH, based on code from http://www.planet-source-code.com/vb/scripts/ShowCode.asp?lngWId=8&txtCodeId=1786 // Checksum calculation function function icmpchecksum($data) { if(strlen($data) % 2) $data .= "\x00"; $bit = unpack('n*', $data); $sum = array_sum($bit); while($sum >> 16) $sum = ($sum >> 16) + ($sum & 0xffff); return pack('n*', ~$sum); } function ping($dest, $data = "DATAHEREPLOX"){ $tpackage = "\x08\x00\x00\x00\x00\x00\x00\x00" . $data; $package = "\x08\x00" . icmpchecksum($tpackage) . "\x00\x00\x00\x00" . $data; if(!$socket = socket_create(AF_INET, SOCK_RAW, 1)) return false; if(!socket_connect($socket, $dest, null)) return false; $startTime = microtime(true); if(!socket_send($socket, $package, strlen($package), 0)) return false; if(socket_read($socket, 255)) $ret = microtime(true) - $startTime; else return false; socket_close($socket); return $ret; } ?> Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå