connectiva penguin bsd logo

PHP - scanner une plage d'adresses ip

Principe

Voici une page php qui scanne une plage d'adresses ip avec deux boucles "for", en utilisant les outils ping, sed, grep, nslookup et nmap présents sur le système d'exploitation du serveur (un unix donc).

Ce script va faire un ping sur toutes les adresses ip des réseaux 10.36.208.2 à 10.36.210.254, avec une liste d'exclusion. Le résultat du ping sera affiché dans un tableau avec un message "ping ok" sur fond vert quand c'est ok, et un message "Server seems down !!" sur fond rouge quand le ping ne passe pas. Il y a également une colonne avec le nom DNS correspondant à d'adresse ip.

Ce script a été testé sur Mandriva 2008.1 et FreeBSD 7.0.

Le code

<?php
echo "<HTML><BODY>";

$exclude_list = array ("10.36.208.2", "10.36.208.3", "10.36.208.4");
echo '<table border=1 style="font-size: 10pt">';
echo '<tr><td>ip</td><td>nom</td><td>état</td></tr>';
for ($RESEAU = 208; $RESEAU <= 210; $RESEAU=$RESEAU+1)
{
  for ($IP = 2; $IP < 255; $IP = $IP+1)
  {
    if (!in_array("10.36.".$RESEAU.".".$IP, $exclude_list))
    {
      echo "<tr>";
      echo "<td>10.36.$RESEAU.$IP</td>";
      echo "<td>";
      system('nslookup 10.36.'.$RESEAU.'.'.$IP.'|grep name|sed "s/.*name = //g"|sed "s/.tlt.*//g"');
      echo " </td>";
      echo "<td>";
      system('if [ `nmap -T4 -p22,23 10.36.'.$RESEAU.'.'.$IP.' | grep "Interesting ports on" | wc -l` -eq 1 ]; then echo "<span style="background-color:#00ff00">Ping ok</span>"; else echo "<span style="background-color:#ff0000">Server seems down !!</span>"; fi');
      echo "</td>";
      echo "</tr>";
    }
  }
}
echo "</table>";

echo "</BODY></HTML>";
?>

Dernière mise à jour : 24 octobre 2008

Valid XHTML 1.1

logo firefox logo ubuntu logo debian logo mandriva logo gimp