#! /usr/bin/php -q <?php # $argc = antall argumenter som blir sendt til filen # $argv = arguementene som blir sendt, kobles med [0-9] for hvilken variabel # fwrite(STDOUT,"text her"); brukes istedenfor print / echo for riktig skriving til console. # Exit Errorlevel, 0=OK, 1=Warning, 2=Critical, 3=Unknown # Eksempel: exit(2); <== F�r da critical status # $_REQUEST[''] brukes for flags, Eksempel: $_REQUEST["-D"] sjekker -D flagget. ## Predefinerte OID'r: $HP_PhyDrvStatus = ".1.3.6.1.4.1.232.3.2.5.1.1.6"; // $HP_PhyDrvSmartStatus = ".1.3.6.1.4.1.232.3.2.5.1.1.57"; // ## SNMP query og output function snmp_query($host,$community,$oid) { if (!$snmpcheck=@snmpget("$host","$community","$oid")) { fwrite(STDOUT,"Unable to get info, host down?"); exit(3); } else { return $snmpcheck; } } ## Argument Variabler if ($argc > 1) { $host = $argv[1]; $community = $argv[2]; if (empty($community)) { fwrite(STDOUT,"Error: Missing Community"); exit(3); } if (!$walk1=@snmpwalk($host, $community, $HP_PhyDrvStatus)) { fwrite(STDOUT,"Unable to get info, host down?\n"); exit(3); } else if (!$walk2=@snmpwalk($host, $community, $HP_PhyDrvSmartStatus)) { fwrite(STDOUT,"Unable to get info, host down?\n"); exit(3); } else { $i = "0"; foreach ($walk1 as $status) { $i++; switch($status) { case 2: $result ="OK"; $errorlevel1 = "0"; break; case 3: $result = "Failed"; $errorlevel2 = "2"; break; case 4: $result = "Failing"; $errorlevel3 = "1"; break; default: $result = "unknown result"; $errorlevel4 = "3"; } fwrite(STDOUT,"Disk $i Status: $result\n"); } $i = "0"; foreach ($walk2 as $status) { $i++; switch($status) { case 2: $result ="OK"; $errorlevel5 = "0"; break; case 3: $result = "Failed"; $errorlevel6 = "2"; break; case 4: $result = "Failing"; $errorlevel7 = "1"; break; default: $result = "unknown result"; $errorlevel8 = "3"; } fwrite(STDOUT,"Disk $i SmartStatus: $result\n"); } if ($errorlevel2 || $errorlevel3 || $errorlevel4 || $errorlevel6 || $errorlevel7 || $errorlevel8) { if ($errorlevel2 || $errorlevel6) { exit(2); //Critical error } if ($errorlevel3 || $errorlevel7) { exit(1); //Warning Error } if ($errorlevel4 || $errorlevel8) { exit(3); //Unknown Error } } else { exit(0); //Success } } } else { fwrite(STDOUT,"Usage: HOSTIP SNMP-COMMUNITY\n"); } ?>