a semi-functional bit of code... lots of todos and error checking
[PHPIPManager.git] / lib / runscan.php
diff --git a/lib/runscan.php b/lib/runscan.php
new file mode 100644 (file)
index 0000000..ceb648b
--- /dev/null
@@ -0,0 +1,70 @@
+<?php
+
+require_once("lib.php");
+
+$db->connect();
+
+$fname = "/var/tmp/.phpipman.".time();
+
+if($argc != 2) {
+       echo "usage: ".$argv[0]." subnet-id";
+}
+
+$res = $db->dbobject->query("select * from subnet where sn_id='".$argv[1]."'");
+$id = $argv[1];
+
+foreach($res as $row) {
+       //("sn_id" INTEGER PRIMARY KEY AUTOINCREMENT,"snid_id" INTEGER,"sn_ip" TEXT,"sn_mask" TEXT,"sn_name" TEXT, "sn_desc" TEXT);
+       $sn_ip = $row["sn_ip"];
+       $sn_mask = $row["sn_mask"];
+}
+
+if(ipversion($sn_ip)!=4) return;
+
+system("/usr/bin/nmap -oX $fname -sP $sn_ip/$sn_mask > /dev/null 2>&1");
+
+//$fname = "/var/tmp/.phpipman.1284344553";
+echo "Output in $fname\n";
+
+$sml = simplexml_load_file("$fname");
+
+foreach($sml as $row => $key) {
+       //echo "row: $row\n";
+       if($row == "host") {
+               //print_r($key);
+               $status = $key->status["state"];
+               $ha = $key->address["addr"];
+               //echo "host address: $ha\n";
+               $hname = "";
+               if(isset($key->hostnames->hostname["name"])) {
+                       //echo "was set: ".$key->hostnames->hostname["name"]."\n";
+                       //exit(0);
+                       $hname = $key->hostnames->hostname["name"];
+               }
+               
+               //"hosts" ("ho_id" INTEGER PRIMARY KEY AUTOINCREMENT,"ho_sn_id" INTEGER,"ho_ip" TEXT,"ho_name" TEXT,"ho_desc" TEXT);';
+               $doadd = false;
+               if($status == "up") {
+                       $doadd = true;
+                       if($hname == "") $hname = $ha;
+                       echo "up: $ha, $hname\n";
+               } else {
+                       if($hname != "") {
+                               $doadd = true;
+                               echo "down: $ha, $hname\n";
+                       }
+               }
+               
+               if($doadd) {
+                       $sql = "delete from hosts where ho_ip=='$ha'";
+                       $db->dbobject->query($sql);
+                       $sql = "insert into hosts values (NULL, '$id', '$ha', '$hname', '')";
+                       $db->dbobject->query($sql);
+                       echo "added, $ha, $hname\n";
+               }
+       }
+       
+}
+unlink($fname);
+
+?>
\ No newline at end of file