a semi-functional bit of code... lots of todos and error checking
[PHPIPManager.git] / lib / runscan.php
1 <?php
2
3 require_once("lib.php");
4
5 $db->connect();
6
7 $fname = "/var/tmp/.phpipman.".time();
8
9 if($argc != 2) {
10         echo "usage: ".$argv[0]." subnet-id";
11 }
12
13 $res = $db->dbobject->query("select * from subnet where sn_id='".$argv[1]."'");
14 $id = $argv[1];
15
16 foreach($res as $row) {
17         //("sn_id" INTEGER PRIMARY KEY AUTOINCREMENT,"snid_id" INTEGER,"sn_ip" TEXT,"sn_mask" TEXT,"sn_name" TEXT, "sn_desc" TEXT);
18         $sn_ip = $row["sn_ip"];
19         $sn_mask = $row["sn_mask"];
20 }
21
22 if(ipversion($sn_ip)!=4) return;
23
24 system("/usr/bin/nmap -oX $fname -sP $sn_ip/$sn_mask > /dev/null 2>&1");
25
26 //$fname = "/var/tmp/.phpipman.1284344553";
27 echo "Output in $fname\n";
28
29 $sml = simplexml_load_file("$fname");
30
31 foreach($sml as $row => $key) {
32         //echo "row: $row\n";
33         if($row == "host") {
34                 //print_r($key);
35                 $status = $key->status["state"];
36                 $ha = $key->address["addr"];
37                 //echo "host address: $ha\n";
38                 $hname = "";
39                 if(isset($key->hostnames->hostname["name"])) {
40                         //echo "was set: ".$key->hostnames->hostname["name"]."\n";
41                         //exit(0);
42                         $hname = $key->hostnames->hostname["name"];
43                 }
44                 
45                 //"hosts" ("ho_id" INTEGER PRIMARY KEY AUTOINCREMENT,"ho_sn_id" INTEGER,"ho_ip" TEXT,"ho_name" TEXT,"ho_desc" TEXT);';
46                 $doadd = false;
47                 if($status == "up") {
48                         $doadd = true;
49                         if($hname == "") $hname = $ha;
50                         echo "up: $ha, $hname\n";
51                 } else {
52                         if($hname != "") {
53                                 $doadd = true;
54                                 echo "down: $ha, $hname\n";
55                         }
56                 }
57                 
58                 if($doadd) {
59                         $sql = "delete from hosts where ho_ip=='$ha'";
60                         $db->dbobject->query($sql);
61                         $sql = "insert into hosts values (NULL, '$id', '$ha', '$hname', '')";
62                         $db->dbobject->query($sql);
63                         echo "added, $ha, $hname\n";
64                 }
65         }
66         
67 }
68 unlink($fname);
69
70 ?>