Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [skrypt] Status komputerów w sieci LAN
BzikOS
post 12.12.2003, 18:35:34
Post #1





Grupa: Przyjaciele php.pl
Postów: 660
Pomógł: 0
Dołączył: 28.08.2002
Skąd: Starachowice

Ostrzeżenie: (0%)
-----


Tak jak obiecałem, umieszczam malutki skrypcik do sprawdzania, które komputery w sieci lokalnej są włączone (wymaga on statycznie przypisanych adresów IP do każdego kompa, można go oczywiście przerobić aby skanował całą klasę w poszukiwaniu kompów, ale robiłem go na własne potrzeby i zależało mi na czasie skanowania snitch.gif)

  1. <?php
  2. // *********************
  3. // Konfiguracja
  4. //
  5.  
  6. /* OS na ktorym bedzie uruchamiany skrypt
  7. windows - dziala _tylko_ metoda ping
  8. unix - dziala zarowno ping jak i nmap (jezeli jest w systemie) */
  9. $config['os'] = 'unix';
  10.  
  11. /* Metoda sprawdzania hostow
  12. ping 
  13. nmap - wymaga nmapa w systemie*/
  14. $config['scanMethod'] = 'nmap';
  15.  
  16. /* IPki do sprawdzenia */
  17. $ipsArray['192.168.0.1'] = &#092;"Host1\";
  18. $ipsArray['192.168.0.2'] = &#092;"Host2\";
  19.  
  20. /* Tablica ipkow majacych dostep do strony (jezeli pusta - wszyscy maja dostep) */
  21. //$allowArray[] = \"127.0.0.1\";
  22.  
  23.  
  24.  
  25. // *********************
  26. // Sprawdzenie uprawnien
  27. // dostepu do strony
  28.  
  29. if( is_array( $allowArray ) )
  30. {
  31. if( in_array( $_SERVER['REMOTE_ADDR'], $allowArray ) == False)
  32. {
  33. print(&#092;"Brak dostępu!\");
  34. exit();
  35. }
  36. }
  37.  
  38.  
  39.  
  40. // *********************
  41. // Szablon
  42.  
  43. $tblBegin = '<table border=\"0\" cellpadding=\"0\" cellspacing=\"2\" summary=\"\">
  44. <tr>
  45. <td colspan=\"3\" class=\"title\">Status komputerów w sieci lokalnej</td>
  46. </tr>
  47. <tr>
  48. <td colspan=\"3\" class=\"separator\"></td>
  49. </tr>
  50. <tr>
  51. <td class=\"cell2\">Status</td>
  52. <td class=\"cell2\">Host/ksywa/imię</td>
  53. <td class=\"cell2\">Adres IP</td>
  54. </tr>';
  55.  
  56. $tblRow = '<tr>
  57. <td class=\"cell\" style=\"text-align: center\"><img src=\"comp{STATUS}.gif\"></td>
  58. <td class=\"cell\">{HOST}</td>
  59. <td class=\"cell\">{IP}</td>
  60. </tr>';
  61.  
  62. $tblEnd = '<tr height=\"55\" valign=\"center\">
  63. <td class=\"cell3\" colspan=\"3\">W sumie: &nbsp;&nbsp;&nbsp; <img src=\"compon.gif\" align=\"absmiddle\"> {SUMAON}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img src=\"compoff.gif\" align=\"absmiddle\"> {SUMAOFF} </td>
  64. </tr>
  65. </table>';
  66.  
  67.  
  68.  
  69. // *********************
  70. // Sprawdzenie komputerow
  71.  
  72. $time_start = getmicrotime();
  73.  
  74. $compOn = $compOff = 0;
  75. foreach( $ipsArray as $ip => $host )
  76. {
  77. $compStatus = scan( $ip );
  78.  
  79. ($compStatus == &#092;"on\") ? $compOn++ : $compOff++;
  80.  
  81. $row = $tblRow;
  82. $row = str_replace( '{STATUS}', $compStatus, $row );
  83. $row = str_replace( '{HOST}', $host, $row );
  84. $row = str_replace( '{IP}', $ip, $row );
  85.  
  86. $rows .= $row;
  87. }
  88.  
  89. $end = str_replace( '{SUMAON}', $compOn, $tblEnd );
  90. $end = str_replace( '{SUMAOFF}', $compOff, $end );
  91.  
  92. $page = $tblBegin . $rows . $end;
  93.  
  94. $time_end = getmicrotime();
  95. $stoper = $time_end - $time_start;
  96.  
  97.  
  98.  
  99. function scan( &$ip )
  100. {
  101. global $config;
  102.  
  103. if( $config['scanMethod'] == 'nmap' )
  104. {
  105. $cmd = shell_exec( &#092;"nmap -sP -max_rtt_timeout 10 $ip\" );
  106. Return ( strpos( $cmd, '1 host up' ) === False ) ? 'off' : 'on';
  107. }
  108.  
  109. elseif( $config['scanMethod'] == 'ping' )
  110. {
  111. if( $config['os'] == 'windows' )
  112. {
  113. $cmd = shell_exec( &#092;"ping -n 1 -w 10 $ip\" );
  114. Return ( strpos( $cmd, '(100%' ) === False ) ? 'on' : 'off';
  115. }
  116. else
  117. {
  118. $cmd = shell_exec( &#092;"ping -c 1 -w 1 $ip\" );
  119. $pingResult = explode( &#092;",\", $cmd );
  120.  
  121. Return ( strpos( $pingResult[1], '1' ) === False ) ? 'off' : 'on';
  122. }
  123. }
  124.  
  125. else
  126. {
  127. Return &#092;"off\";
  128. }
  129. }
  130.  
  131.  
  132. function getmicrotime()
  133. { 
  134. list( $usec, $sec ) = explode( &#092;" \", microtime() );
  135. return( (float)$usec + (float)$sec ); 
  136. }
  137. ?>
  138.  
  139. <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">
  140. <head>
  141. <meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-2\" />
  142. <style type=\"text/css\">
  143. body {
  144. margin: 15px;
  145. font: 11px Verdana;
  146. color: #515151;
  147. }
  148.  
  149. table {
  150. text-align: center;
  151. border: 1px solid gray;
  152. }
  153.  
  154. a, a:link, a:visited {
  155. text-decoration: none;
  156. color: #515151;
  157. }
  158.  
  159. a:hover {
  160. text-decoration: underline;
  161. color: black;
  162. }
  163.  
  164. td, tr {
  165. font: 11px Verdana;
  166. color: #515151;
  167. }
  168.  
  169. .title {
  170. padding: 5px;
  171. background-color: #e5e5e5;
  172. color: black;
  173. text-align: center;
  174. font-weight: bold;
  175. }
  176.  
  177. .cell {
  178. padding: 5px;
  179. background-color: #F5F5F5;
  180. text-align: left;
  181. }
  182.  
  183. .cell2 {
  184. padding: 5px;
  185. background-color: #F5F5F5;
  186. font-weight: bold;
  187. text-align: center;
  188. }
  189.  
  190. .cell3 {
  191. padding: 5px;
  192. background-color: #F5F5F5;
  193. font-weight: bold;
  194. text-align: right;
  195. }
  196.  
  197. .separator {
  198. height: 2px;
  199. background-color: #D2D2D2;
  200. }
  201.  
  202. .stopka {
  203. font: 9px Verdana;
  204. color: #a5a5a5;
  205. }
  206. </style>
  207. <title>Status komputerów w sieci lokalnej</title>
  208. </head>
  209. <body>
  210.  
  211. <?
  212. print( $page );
  213. print( '<p class=\"stopka\">' );
  214. print( 'scan method: <b>' . $config['scanMethod'] . '</b><br>' );
  215. printf( 'generated in <b>%0.2f sec.</b><br>', $stoper );
  216. print( 'code by <b>BzikOS</b></p>' );
  217. ?>
  218.  
  219. </body>
  220. </html>


Ikonki (compon.gif i compoff.gif) można zrobić samemu, a bardzo leniwi mogą sobie pobrać te, które ja użyłem.

Skrypcik można używać i zmieniać do woli, jedyne o co proszę to o link do skryptu w przypadku użycia go smile.gif


<b>[update]</b> Uwaga, skrypt przystosowany jest do sprawdzania komputerów w sieci lokalnej! Jeżeli ktoś chce sprawdzać zewnętrzne hosty, musi zwiększyć czas oczekiwania na odpowiedź (-w 10 - w przypadku pinga windowsowego; -max_rtt_timeout 10 - w przypadku nmapa), co niestety wydłuży czas sprawdzania hostów.
Czas ten podany jest w milisekundach, myślę, że w przypadku zewnetrznych hostów trzeba by ustawić go na co najmniej 200 ms.
Go to the top of the page
+Quote Post

Posty w temacie
- BzikOS   [skrypt] Status komputerów w sieci LAN   12.12.2003, 18:35:34
- - BzikOS   Podmienione fragmenty kodu z dodaną kolumną na nr ...   14.12.2003, 23:54:34
- - Junior   dzisiaj to sprawdze   15.12.2003, 16:42:11
- - killemall   Działa jak należy Thx.   15.12.2003, 16:58:49
- - lucek   A moze jeszcze moglbym prosic przyklad - jak IP i ...   16.12.2003, 20:42:39
- - Bakus   Tworzysz sobie tabelę, umieszczasz w niej wszystki...   17.12.2003, 01:12:18
- - BzikOS   Bakus: dzięki   17.12.2003, 08:37:54
- - lucek   Dzieki. Tylko nie bardzo wiem w ktorym miejscu to...   17.12.2003, 13:10:26
- - BzikOS   Po prostu stare zmienne zastępujesz nowymi ($ipsAr...   17.12.2003, 13:31:58
- - Bakus   Ja zastosowałem while, bo do tego foreach się nie ...   17.12.2003, 16:56:30
- - BzikOS   Argh sorki.. pomyliły mi się posty, mój poprzedni ...   17.12.2003, 18:09:24
- - Mnichasso   Ja mam pytanie dlaczego u mnie na kompie wyskakuje...   18.12.2003, 12:32:48
- - BzikOS   To nie błąd tylko notatka A dlatego u Ciebie wysk...   18.12.2003, 12:38:29
- - BzikOS   Posty nie związane bezpośrednio z tematem zostały ...   18.12.2003, 15:24:21
- - BzikOS   Uwaga. Dodałem do skryptu możliwość wyświetlania p...   30.12.2003, 01:20:47
- - gsk   a jak zrobic tak ze jak klikne na obrazek komputer...   22.02.2004, 14:25:49
- - BzikOS   Cytata jak zrobic tak ze jak klikne na obrazek kom...   22.02.2004, 15:32:29
- - gsk   sa rozne...jak np. host jest xxx to file://xxx/ ja...   22.02.2004, 19:14:48
- - BzikOS   Ok, a więc zamień: [PHP] pobierz, plaintext <?...   24.02.2004, 09:13:27
- - wassago   fajna sprawa z tym shaperd'edem.   24.02.2004, 12:13:20
- - gsk   Thnx BzikOS tylko to dziala dla wszystkich kompute...   24.02.2004, 13:04:06
- - BzikOS   CytatThnx BzikOS tylko to dziala dla wszystkich ko...   24.02.2004, 13:26:34
- - berger   Witam. Fajny ten skrypcik i potrzebny. Ale czy dał...   21.03.2004, 19:47:15
- - BzikOS   To już nie php, a zwykły html... Dodaj w meta taga...   21.03.2004, 21:18:58
- - berger   Dzięki ! Wszystko działa ok! Dało się to nawet prz...   22.03.2004, 18:14:43
- - Chewolf   Świetny skrypt przerobiłem go sobie na swoje potrz...   25.04.2004, 13:36:26
- - BzikOS   Cytat(...) ale czy można zrobić tak że skrypt będz...   25.04.2004, 14:00:12
- - Chewolf   CytatNie pamiętam jakim narzędziem można sprawdzić...   25.04.2004, 16:51:54
- - phoenix84   a dlaczego mi na windows chodzi ping, a na unix ty...   19.05.2004, 00:06:40
- - hwao   Cytata dlaczego mi na windows chodzi ping, a na un...   19.05.2004, 07:35:08
- - phoenix84   bo dzieki ping moge na www reklamowac szybkosc sie...   19.05.2004, 08:04:08
- - donek   Czesc, skrypt BzikOS jest calkiem niezly. Nie znam...   23.10.2004, 17:35:15
- - redmateo   wszystko ok, ale co w momencie kiedy na danym komp...   31.10.2004, 15:21:14
- - Marusz   Ok. Tym, którzy cierpią na kłopoty związane z użyc...   8.11.2004, 22:53:19
- - adisan1   Skrypcik jest genialny mozna go dowolnie modyfiko...   26.11.2004, 10:47:02
- - omen   Hejka Mam pytanko czy ktoś przerobił ten skrypcik...   15.12.2004, 23:45:53
- - bela_666   zrob tak aby skanowało port 21   15.12.2004, 23:55:26
- - omen   Mam prośbe do wszystkich speców od php, czy mogł b...   18.12.2004, 14:25:57
- - dr_bonzo   Co do ftpow, uzyj socketow i proboj sie polaczyc n...   18.12.2004, 15:13:34
- - Bakus   Pochwale się swoją modyfikacją: https://ssl.idn.ne...   21.12.2004, 22:42:57
- - bela_666   Bakus Brak dostępu! Haha   21.12.2004, 22:55:27
- - omen   Heheheh u mnie też Brak dostępu! Bakus wrz...   22.12.2004, 11:59:51
- - wojteks   powiedzcie mi co jest nie tak wszytko mi działa ty...   23.12.2004, 12:11:17
- - bela_666   jest wlaczony Safe Mode   23.12.2004, 12:57:49
- - Bakus   trzecia linijka została przezemnie pominięta przy ...   25.12.2004, 02:00:55
- - alchemic   Witam mam to odpalone na Alacer 2.0 i nie dziala ...   10.02.2005, 01:38:57
- - Bakus   "Ten ostatni" był przez jakiś czas dostę...   10.02.2005, 05:36:53
- - dr_bonzo   Cytatod windowsem nie ma innej metody jak ping - n...   10.02.2005, 09:05:18
- - boya   Cytat(BzikOS @ 2003-12-15 00:54:34)Podmienion...   10.02.2005, 18:41:44
- - BzikOS   Cytat(boya @ 2005-02-10 19:41:44)Cytat(BzikOS...   15.02.2005, 11:02:28
- - piwib   Rozwiązał ktoś problem firewalla? Było podane rozw...   23.04.2006, 15:50:14
- - piser   Oto przykład skryptu który strawdza stan komputera...   2.05.2006, 15:57:22
- - boug   Spoko bardzo fajny jest ten skrypt ale nei wiem dl...   14.05.2006, 16:27:34
- - em1X   Cytat("piser")Oto przykład skryptu który...   14.05.2006, 17:58:17


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 25.06.2025 - 17:35