<?php // ********************* // Konfiguracja // /* OS na ktorym bedzie uruchamiany skrypt windows - dziala _tylko_ metoda ping unix - dziala zarowno ping jak i nmap (jezeli jest w systemie) */ $config['os'] = 'unix'; /* Metoda sprawdzania hostow ping nmap - wymaga nmapa w systemie*/ $config['scanMethod'] = 'nmap'; /* IPki do sprawdzenia */ $ipsArray['192.168.0.1'] = "Host1"; $ipsArray['192.168.0.2'] = "Host2"; /* Tablica ipkow majacych dostep do strony (jezeli pusta - wszyscy maja dostep) */ //$allowArray[] = "127.0.0.1"; // ********************* // Sprawdzenie uprawnien // dostepu do strony { { } } // ********************* // Szablon $tblBegin = '<table border="0" cellpadding="0" cellspacing="2" summary=""> <tr> <td colspan="3" class="title">Status komputerów w sieci lokalnej</td> </tr> <tr> <td colspan="3" class="separator"></td> </tr> <tr> <td class="cell2">Status</td> <td class="cell2">Host/ksywa/imię</td> <td class="cell2">Adres IP</td> </tr>'; $tblRow = '<tr> <td class="cell" style="text-align: center"><img src="comp{STATUS}.gif"></td> <td class="cell">{HOST}</td> <td class="cell">{IP}</td> </tr>'; $tblEnd = '<tr height="55" valign="center"> <td class="cell3" colspan="3">W sumie: <img src="compon.gif" align="absmiddle"> {SUMAON} <img src="compoff.gif" align="absmiddle"> {SUMAOFF} </td> </tr> </table>'; // ********************* // Sprawdzenie komputerow $time_start = getmicrotime(); $compOn = $compOff = 0; foreach( $ipsArray as $ip => $host ) { $compStatus = scan( $ip ); ($compStatus == "on") ? $compOn++ : $compOff++; $row = $tblRow; $rows .= $row; } $page = $tblBegin . $rows . $end; $time_end = getmicrotime(); $stoper = $time_end - $time_start; function scan( &$ip ) { if( $config['scanMethod'] == 'nmap' ) { } elseif( $config['scanMethod'] == 'ping' ) { if( $config['os'] == 'windows' ) { } else { } } else { Return "off"; } } function getmicrotime() { return( (float)$usec + (float)$sec ); } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" /> <style type="text/css"> body { margin: 15px; font: 11px Verdana; color: #515151; } table { text-align: center; border: 1px solid gray; } a, a:link, a:visited { text-decoration: none; color: #515151; } a:hover { text-decoration: underline; color: black; } td, tr { font: 11px Verdana; color: #515151; } .title { padding: 5px; background-color: #e5e5e5; color: black; text-align: center; font-weight: bold; } .cell { padding: 5px; background-color: #F5F5F5; text-align: left; } .cell2 { padding: 5px; background-color: #F5F5F5; font-weight: bold; text-align: center; } .cell3 { padding: 5px; background-color: #F5F5F5; font-weight: bold; text-align: right; } .separator { height: 2px; background-color: #D2D2D2; } .stopka { font: 9px Verdana; color: #a5a5a5; } </style> <title>Status komputerów w sieci lokalnej</title> </head> <body> <? ?> </body> </html>
Do tego już podano rozwiązanie na ten problem ale według mnie nie działa:
" Ok. Tym, którzy cierpią na kłopoty związane z użyciem przez userów firewalla, polecam poniższą modyfikację jednej z funkcji:
<?php function scan( &$ip ) { if( $config['scanMethod'] == 'nmap' ) { } elseif( $config['scanMethod'] == 'arping' ) { { Return "on"; } else { Return "off"; } } elseif( $config['scanMethod'] == 'arplog' ) { { Return "on"; } else { Return "off"; } } else { Return "off"; } } ?>
Nie zapomnijcie zmodyfikować zmiennej $config['scanMethod']. Dwie nowe metody to arplog oraz arping. Miłej zabawy! A! W przypadku arpinga zastosowałem dostęp do owego dla użytkownika nobody (pracuje na nim apache) poprzez sudo. Odpowiednia konfiguracja pliku sudo (/etc/sudoers) wyglada tak:
nobody ALL=NOPASSWD:/sbin/arping "
Używam metody ping bo urachamiam to na windzie. Może ktoś pomoże rozwiązac mój problem...
Pozdrawiam