Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [skrypt] Status komputerów w sieci LAN
BzikOS
post
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 (IMG:http://forum.php.pl/style_emoticons/default/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 (IMG:http://forum.php.pl/style_emoticons/default/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
 
Start new topic
Odpowiedzi
BzikOS
post
Post #2





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

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


Cytat
a jak zrobic tak ze jak klikne na obrazek komputera jak komp jest online to mi sie otwiera przekladowo file://xxx/, a jak komp jest offline to nie ma nic (nie ma zadnego linku)...

Czy ten link jest dla każdego hostu taki sam, czy są różne dla różnych hostów?
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
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.11.2025 - 14:41