Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [skrypt] Status komputerów w sieci LAN
Forum PHP.pl > Forum > Gotowe rozwiązania
Stron: 1, 2
BzikOS
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.
BzikOS
Podmienione fragmenty kodu z dodaną kolumną na nr GG.

  1. <?php
  2. $ipsArray['192.168.0.1'] = Array( &#092;"Host1\", \"nr GG 1\" );
  3. $ipsArray['192.168.0.2'] = Array( &#092;"Host2\", \"nr GG 2\" ); 
  4.  
  5. // (...)
  6.  
  7. $tblBegin = '<table border=\"0\" cellpadding=\"0\" cellspacing=\"2\" summary=\"\">
  8. <tr>
  9. <td colspan=\"4\" class=\"title\">Status komputerów w sieci lokalnej</td>
  10. </tr>
  11. <tr>
  12. <td colspan=\"4\" class=\"separator\"></td>
  13. </tr>
  14. <tr>
  15. <td class=\"cell2\">Status</td>
  16. <td class=\"cell2\">Host/ksywa/imię</td>
  17. <td class=\"cell2\">Adres IP</td>
  18. <td class=\"cell2\">Numer GG</td>
  19. </tr>';
  20.  
  21. $tblRow = '<tr>
  22. <td class=\"cell\" style=\"text-align: center\"><img src=\"comp{STATUS}.gif\"></td>
  23. <td class=\"cell\">{HOST}</td>
  24. <td class=\"cell\">{IP}</td>
  25. <td class=\"cell\">{NRGG}</td>
  26. </tr>';
  27.  
  28. $tblEnd = '<tr height=\"55\" valign=\"center\">
  29. <td class=\"cell3\" colspan=\"4\">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>
  30. </tr>
  31. </table>';
  32.  
  33. // (...)
  34.  
  35. foreach( $ipsArray as $ip => $host )
  36. {
  37. $compStatus = scan( $ip );
  38.  
  39. ($compStatus == &#092;"on\") ? $compOn++ : $compOff++;
  40.  
  41. $row = $tblRow;
  42. $row = str_replace( '{STATUS}', $compStatus, $row );
  43. $row = str_replace( '{HOST}', $host[0], $row );
  44. $row = str_replace( '{IP}', $ip, $row );
  45. $row = str_replace( '{NRGG}', $host[1], $row );
  46.  
  47. $rows .= $row;
  48. }
  49. ?>
Junior
dzisiaj to sprawdze smile.gif
killemall
Działa jak należy smile.gif Thx.
lucek
A moze jeszcze moglbym prosic przyklad - jak IP i inne dane (gg,email itp) pobierac z bazy danych.
A nazwy hostow pobierac z pobranego z bazy IP
Z gory dzieki
Bakus
Tworzysz sobie tabelę, umieszczasz w niej wszystkie dane a póżniej:
mysql_query" title="Zobacz w manualu PHP" target="_manual i pętelka while" title="Zobacz w manualu PHP" target="_manual.

  1. <?php
  2. mysql_connect(&#092;"serwer.mysql.pl\", \"nazwa_uzytkownika\", \"HasłoUżytKowNiKa\");
  3. mysql_select_db(&#092;"nazwa_bazy_danych\");
  4. $q = mysql_query(&#092;"SELECT * FROM kompurety\");
  5. while($w = mysql_fetch_array($q))
  6. {
  7.  $ipsArray[$w[&#092;"NumerIP\"]] = Array(gethostbyaddr($w[\"NumerIP\"]), $w[\"nrGG\"]);
  8. }
  9. ?>

Tabela w MySQLu:
Kod
+-----+---------------+---------+
|  ID |    NumerIP    |   nrGG  |
+-----+---------------+---------+
|   1 |   192.168.0.1 | 1247858 |
.     .               .         .
.     .               .         .
.     .               .         .
| 255 | 192.168.0.255 | 2562562 |
+-----+---------------+---------+


Kod bazy i uaktualnienia skryptu pisany na poczekaniu, może być mało wydajny przy dużej ilości compów, ale działa...
BzikOS
Bakus: dzięki smile.gif
lucek
Dzieki.

Tylko nie bardzo wiem w ktorym miejscu to wrzucic - i ktora czesc kodu usunac.
BzikOS
Po prostu stare zmienne zastępujesz nowymi ($ipsArray, $tblBegin, $tblRow, $tblEnd) i jeszcze całą pętlę foreach zastępujesz nową.. that's all
Bakus
Ja zastosowałem [manual:fc0867e26e]while[/manual:fc0867e26e], bo do tego [manual:fc0867e26e]foreach[/manual:fc0867e26e] się nie za bardzo nadaje...

Było by to podwójne przepisywanie tablicy...
BzikOS
Argh sorki.. pomyliły mi się posty, mój poprzedni post dotyczył wprowadzenia zmian tych z drugiego mojego postu, a nie Bakusia. Aby wprowadzić zmiany Bakusia, zastąp tylko tablice $ipsArray zaproponowanym przez niego kodem smile.gif
Mnichasso
Ja mam pytanie dlaczego u mnie na kompie wyskakuje błąd:
Cytat
Notice: Undefined variable: allowArray in c:apachehtdocsskrypcik.php on line 30

Notice: Undefined variable: rows in c:apachehtdocsskrypcik.php on line 91


linia 30 to:
[php:1:7cad617ecb]if( is_array( $allowArray ) ) [/php:1:7cad617ecb]

a linia 91 to:
[php:1:7cad617ecb] $rows .= $row; [/php:1:7cad617ecb]
BzikOS
To nie błąd tylko notatka winksmiley.jpg A dlatego u Ciebie wyskakuje, ponieważ masz włączone pokazywanie notatek winksmiley.jpg Zrób tak:

Zamiast:
  1. <?php
  2. if( is_array( $allowArray ) )
  3. ?>


to:
  1. <?php
  2. if( isset( $allowArray ) )
  3. ?>


A przed foreachem zrób tak:
  1. <?php
  2. $rows = '';
  3. foreach( $ipsArray as $ip => $host )
  4. ?>


I powinno być ok smile.gif
BzikOS
Posty nie związane bezpośrednio z tematem zostały wydzielone tu.
BzikOS
Uwaga. Dodałem do skryptu możliwość wyświetlania przydzielonych przez program shaperd widełek downloadu i uploadu dla każdego zdefiniowanego hostu.
Jeżeli ktoś uważa, że mu się przyda, niech pisze (oczywiście najpierw trzeba mieć postawionego i uruchomionego shaperd'a winksmiley.jpg).
gsk
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)...chodzi mi o ten skrypt ktory BzikOs napisal jak to w nim dodac...bo ja sie troche zamotalem... :wink:
Pozdrawiam
BzikOS
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?
gsk
sa rozne...jak np. host jest xxx to file://xxx/ jak ppp to file://ppp/ i tak analogicznie...
____
BzikOS napisz jak to bedzie jak mozesz, bylbym ci wdzieczny...Pozdro...
BzikOS
Ok, a więc zamień:

  1. <?php
  2. $ipsArray['192.168.0.1'] = &#092;"Host1\";
  3. $ipsArray['192.168.0.90'] = &#092;"Host2\";
  4. //na
  5. $ipsArray['192.168.0.1'] = Array( 'Host1', 'http://link.com' );
  6. $ipsArray['192.168.0.90'] = Array( 'Host2' );
  7. ?>


  1. <?php
  2. $tblRow = '<tr>
  3. <td class=\"cell\" style=\"text-align: center\"><img
  4.  src=\"comp{STATUS}.gif\"></td>
  5. <td class=\"cell\">{HOST}</td>
  6. <td class=\"cell\">{IP}</td>
  7. </tr>';
  8. // na
  9. $tblRow = '<tr>
  10. <td class=\"cell\" style=\"text-align: center\">{STATUS}</td>
  11. <td class=\"cell\">{HOST}</td>
  12. <td class=\"cell\">{IP}</td>
  13. </tr>';
  14. ?>


  1. <?php
  2. // za linią
  3. ($compStatus == &#092;"on\") ? $compOn++ : $compOff++;
  4. //dopisz
  5. $compStatus = isset( $host[1] ) ? '<a href=\"'.$host[1].'\"><img src=\"comp'.$compStatus.'.gif\" border=\"0\"></a>' : '<img src=\"comp'.$compStatus.'.gif\">';
  6. ?>


That's all.
wassago
fajna sprawa z tym shaperd'edem.
gsk
Thnx BzikOS tylko to dziala dla wszystkich komputerow tzn. dla online i offline a mi chodzi oto zeby to dzialalo tylko dla komputerow ktore sa aktualnie online..z gory thnx...napisz jakby to moglo wygladac...paaa
BzikOS
Cytat
Thnx BzikOS tylko to dziala dla wszystkich komputerow tzn. dla online i offline a mi chodzi oto zeby to dzialalo tylko dla komputerow ktore sa aktualnie online..z gory thnx...napisz jakby to moglo wygladac...paaa


  1. <?php
  2. $compStatus = ( isset( $host[1] ) && $compStatus == &#092;"on\" ) ? '<a href=\"'.$host[1].'\"><img src=\"comp'.$compStatus.'.gif\" border=\"0\"></a>' : '<img src=\"comp'.$compStatus.'.gif\">'; 
  3. ?>
berger
Witam.
Fajny ten skrypcik i potrzebny. Ale czy dałoby się tak go przerobić żeby odświerzał stan automatycznie np. po 30 sek albo 1, 2 czy 10 min ?
Pozdrawiam
BzikOS
To już nie php, a zwykły html...
Dodaj w meta tagach linijkę:
  1. <meta http-equiv="refresh" content="30" />
berger
Dzięki !
Wszystko działa ok!
Dało się to nawet przerobic jako komponent mambo smile.gif (mam nadzieję że się zgadzasz).
Pozdrawiam i milego dnia
Chewolf
Świetny skrypt przerobiłem go sobie na swoje potrzeby , ale czy można zrobić tak że skrypt będzie sprawdzał czy dany komputer coś udostępnia questionmark.gif (nie mówie o klikaniu na adres i sprawdzaniu ;-))
BzikOS
Cytat
(...) ale czy można zrobić tak że skrypt będzie sprawdzał czy dany komputer coś udostępnia questionmark.gif (nie mówie o klikaniu na adres i sprawdzaniu ;-))


Ano można, jeżeli skrypt działa na linuxie trzeba posłuzyć się klientem samby (smbclient), a jeżeli pod windowsem (XP) poleceniem 'net view bios_name' lub 'net view wewnetrzny.adre.IP'. Później tylko sparsować wynik i wyświetlić. Nie pamiętam jakim narzędziem można sprawdzić zasoby w Windowsach z rodziny 9X.
Chewolf
Cytat
Nie pamiętam jakim narzędziem można sprawdzić zasoby w Windowsach z rodziny 9X.

To chyba jest NET BIOS (nbtstat)
phoenix84
a dlaczego mi na windows chodzi ping, a na unix tylko nmap? a ping nie?

pozdro

Phoenix
hwao
Cytat
a dlaczego mi na windows chodzi ping, a na unix tylko nmap? a ping nie?

pozdro

Phoenix

bo nie musi 8)
To zalezy od systemu i czy mam taka funkcje ... ale jak dziala to poco pytac?
phoenix84
bo dzieki ping moge na www reklamowac szybkosc sieci, bo mozna pokazywac realny ping w danym momecie do np. wp.pl biggrin.gif

chyba, ze jest inny sposob biggrin.gif

pozdro

phoenix
donek
Czesc, skrypt BzikOS jest calkiem niezly.
Nie znam wcale php i meczylem sie troche zeby go przerobic z nmap na arping. teraz wiekszosc osob stosuje firewalla ktory bez odpowiedniej konnfiguracji nie odpowiada pingiem. wiec arping jest dobrym sposobem zeby obejsc firewalla.
Zmienilem regolke nmapa na "arping -i eth1 -c1 $ip"
w lini Return ( stros ($cmd, '1 host up' === FALSE ) ? 'off; : 'on';
zmienilem na Return ( stros ($cmd, 0%' === FALSE ) ? 'off; : 'on';
Spowodowalo to ze nie pokazuje mi zadnego aktywnego komputera.
Moze mi ktos w tym pomoze?
Pozdrawiam
Damian
donky@tlen.pl
redmateo
wszystko ok, ale co w momencie kiedy na danym komputerze zainstalowany jest firewall? wówczas skrypt niestety nie daje rady ... zajełem się więc sprawdzaniem statusów z innej strony:

odczyt aktywności (ruchu) komputerów z pliku w którym przechowywane są dane na temat wzbudzzonych połączeń:

cat /proc/net/ip_conntrack | grep 192.168.0.1 | grep 80 > /var/www/html/stat/pc.txt

przetworzenie uzyskanych danych:

<?
$baza = "/var/www/html/stat/pc.txt";
$plik = file($baza);
$success = 0;
$sn = 0;
$en = count($plik);
do {
if(stristr($plik[$sn],"192.168.0.1")) {
$dataex = explode("|",$plik[$sn]);
$success++;
echo '<img src=http://polanie.net/stat/img/pc_online.jpg />192.168.0.1 <b><font color=008000>dziala</font></b>';
}
$sn++;
}
while($sn < $en);
if($success == 0) {
echo '<img src=http://polanie.net/stat/img/pc_offline.jpg />192.168.0.1 <b><font color=FF0000>awaria</font></b>';
}
?>

ale tu pojawia się błąd, w efekcie otrzymuje tyle ikon aktywnego komputera ile razy znaleziono ten sam wynik,

powstaje wiec pytanie: jak w wyniku pokazac tylko jedną ikonę bez względu na ilość odnalezionych wpisów?
Marusz
Ok. Tym, którzy cierpią na kłopoty związane z użyciem przez userów firewalla, polecam poniższą modyfikację jednej z funkcji:

  1. <?php
  2.  
  3. function scan( &$ip )
  4. {
  5. global $config;
  6.  
  7. if( $config['scanMethod'] == 'nmap' )
  8. {
  9.  
  10. $cmd = shell_exec( &#092;"nmap -sP -max_rtt_timeout 20 $ip\" );
  11. Return ( strpos( $cmd, '1 host up' ) === False ) ? 'off' : 'on';
  12.  
  13. }
  14.  
  15.  
  16. elseif( $config['scanMethod'] == 'arping' )
  17. {
  18.  
  19. $cmd = strtolower ( shell_exec ( &#092;"sudo /sbin/arping -c 1 -w 1 $ip\" ) );
  20.  
  21. if ( ereg ( 'received 1 response', $cmd ) )
  22. {
  23.  
  24. Return &#092;"on\";
  25.  
  26. }
  27. else
  28. {
  29.  
  30. Return &#092;"off\";
  31.  
  32. }
  33.  
  34. }
  35.  
  36. elseif( $config['scanMethod'] == 'arplog' )
  37. {
  38.  
  39. $cmd = trim ( shell_exec ( &#092;"cat /proc/net/arp|grep $ip\" ) );
  40.  
  41. if ( !empty( $cmd ) )
  42. {
  43.  
  44. Return &#092;"on\";
  45.  
  46. }
  47. else
  48. {
  49.  
  50. Return &#092;"off\";
  51.  
  52. }
  53.  
  54. }
  55. else
  56. {
  57. Return &#092;"off\";
  58. }
  59.  
  60. }
  61.  
  62. ?>


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
adisan1
Skrypcik jest genialny smile.gif mozna go dowolnie modyfikowac smile.gif ale ja mam troche inne pytanko smile.gif


czy wie ktos jak przerobic ten skrypt na funkcjie bo mam 20 kompow i nie chce 20 x scrypt, dane wyciagam z bazy mysql
pobrac z bazy ip
przekazac do funkcji
funkcjia zwraca stan
funkcjia zeruje
pobiera kolejne ip
itd. <czy dobrze mysle questionmark.gif>

z gory serdecznie dziekuje za pomoc
omen
Hejka

Mam pytanko czy ktoś przerobił ten skrypcik tak żeby pokazywał akualnie włączone FTPy w sieci lokalnej ? worriedsmiley.gif

Czy ktoś ma pomysł jak to zrobić ?


Pozdrawiam
bela
zrob tak aby skanowało port 21
omen
Mam prośbe do wszystkich speców od php, czy mogł by ktoś przerobić ten skrypcik tak żeby pokazywał FTPy on i off line oraz status gg.

przykład ping


Pozdrawiam
dr_bonzo
Co do ftpow, uzyj socketow i proboj sie polaczyc na poort ftpa (domyslnie 21).
Bakus
Pochwale się swoją modyfikacją:
https://ssl.idn.net.pl/admin/lan/stan/

biggrin.gif
bela
Bakus Brak dostępu! Haha biggrin.gif
omen
Heheheh u mnie też Brak dostępu! tongue.gif

Bakus wrzuć kodzik tego skryptu.



Pozdrawiam
wojteks
powiedzcie mi co jest nie tak wszytko mi działa tylko wypisuje:

Warning: shell_exec(): Cannot execute using backquotes in Safe Mode in /mnt/storage/users/c/h/w/chww/lan.php on line 105

linia 105 to
  1. <?php
  2.  
  3. $cmd = shell_exec( &#092;"ping -n 1 -w 10 $ip\" );
  4.  
  5. ?>
bela
jest wlaczony Safe Mode
Bakus
smile.gif trzecia linijka została przezemnie pominięta przy wrzucaniu linku tongue.gif
Skrypt jest dostosowany do wyciągan ia danych z panelu administracyjnego routera Asmax AR-701u
Pod w/w linkiem juz jest dostep...
  1. <?php
  2.  
  3. if(eregi(&#092;"^192.168.0.([0-9]+)$\", $_SERVER['REMOTE_ADDR']) == false)
  4. {
  5. print &#092;"Brak dostępu!\";
  6. exit();
  7. }
  8.  
  9. /* IPki do sprawdzenia */
  10.  
  11. $ipsArray['192.168.0.1'] = &#092;"Master server\";
  12. $ipsArray['192.168.0.2'] = &#092;"Router\";
  13. $ipsArray['192.168.0.4'] = &#092;"Terminal\";
  14.  
  15. $data = @implode('', @file(&#092;"http://login:haslo@ADRES_IP_ROUTERA/doc/lan1.htm\"));
  16. ereg(&#092;"st_dhcp_client_mac = new Array(([0-9]+));n(.*)nvar numDHCPClients\", $data, $array);
  17. $array = str_replace(array('st_dhcp_client_ip', '192.168.0.'), array('$ip', ''), $array[2]);
  18. $array = eregi_replace('st_dhcp_client_mac[([0-9]+)] = \"([:[:alnum:]]+)\";', '', $array);
  19. eval($array);
  20. sort($ip);
  21. foreach($ip as $ipek)
  22. {
  23. $DHCPipsArray[] = &#092;"192.168.0.\" . $ipek;
  24. }
  25.  
  26. $time_start = getmicrotime();
  27. $compOn = $compOff = 0;
  28. function scan( &$ip )
  29. {
  30. $cmd = shell_exec(&#092;"nmap -sP -max_rtt_timeout 10 \" . $ip);
  31. return (strpos( $cmd, '1 host up') === false) ? 'off' : 'on';
  32. }
  33. function getmicrotime()
  34. { 
  35. list( $usec, $sec ) = explode( &#092;" \", microtime() );
  36. return( (float)$usec + (float)$sec ); 
  37. }
  38. ?>
  39. <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">
  40. <!--
  41. Stworzone na podbudowie skryptu BzikOSa
  42. -->
  43. <head>
  44. <meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-2\" />
  45. <style type=\"text/css\">
  46. body {
  47. margin: 15px;
  48. font: 11px Verdana;
  49. color: #515151;
  50. }
  51. table {
  52. text-align: center;
  53. border: 1px solid gray;
  54. }
  55. a, a:link, a:visited {
  56. text-decoration: none;
  57. color: #515151;
  58. }
  59. a:hover {
  60. text-decoration: underline;
  61. color: black;
  62. }
  63. td, tr {
  64. font: 11px Verdana;
  65. color: #515151;
  66. }
  67. .title {
  68. padding: 5px;
  69. background-color: #e5e5e5;
  70. color: black;
  71. text-align: center;
  72. font-weight: bold;
  73. }
  74. .cell {
  75. padding: 5px;
  76. background-color: #F5F5F5;
  77. text-align: left;
  78. }
  79. .cell2 {
  80. padding: 5px;
  81. background-color: #F5F5F5;
  82. font-weight: bold;
  83. text-align: center;
  84. }
  85. .cell3 {
  86. padding: 5px;
  87. background-color: #F5F5F5;
  88. font-weight: bold;
  89. text-align: right;
  90. }
  91. .stopka {
  92. font: 9px Verdana;
  93. color: #a5a5a5;
  94. text-align: center;
  95. }
  96. </style>
  97. <title>Status komputerów w sieci lokalnej</title>
  98. </head>
  99. <body>
  100. <table border=\"0\" cellpadding=\"0\" cellspacing=\"2\" align=\"center\">
  101. <tr>
  102. <td colspan=\"3\" class=\"title\">Komputery ze statycznym adresem IP</td>
  103. </tr>
  104. <tr>
  105. <td class=\"cell2\">Status</td>
  106. <td class=\"cell2\">Host/ksywa/imię</td>
  107. <td class=\"cell2\">Adres IP</td>
  108. </tr>
  109. <?php
  110. foreach( $ipsArray as $ip => $host )
  111. {
  112. $status = scan( $ip );
  113. if($status == &#092;"on\")
  114. {
  115. $compOn++;
  116. }else{
  117. $compOff++;
  118. }
  119. ?>
  120. <tr>
  121. <td class=\"cell\" style=\"text-align: center\"><img src=\"comp<?php print $status; ?>.gif\"></td>
  122. <td class=\"cell\"><?php print $host; ?></td>
  123. <td class=\"cell\"><?php print $ip; ?></td>
  124. </tr>
  125. <?php
  126. }
  127. ?>
  128. <tr>
  129. <td colspan=\"3\" class=\"title\">Komputery podłączone do DHCP*</td>
  130. </tr>
  131. <tr>
  132. <td class=\"cell2\">Status</td>
  133. <td colspan=\"2\" class=\"cell2\">Adres IP</td>
  134. </tr>
  135. <?php
  136. foreach($DHCPipsArray as $ip)
  137. {
  138. $status = scan($ip);
  139. if($status == &#092;"on\")
  140. {
  141. $compOn++;
  142. }else{
  143. $compOff++;
  144. }
  145. ?>
  146. <tr>
  147. <td class=\"cell\" style=\"text-align: center\"><img src=\"comp<?php print $status; ?>.gif\"></td>
  148. <td colspan=\"2\" class=\"cell\"><?php print $ip; ?></td>
  149. </tr>
  150. <?php
  151. }
  152. ?>
  153. <tr height=\"55\" valign=\"center\">
  154. <td class=\"cell3\" colspan=\"3\">W sumie: &nbsp;&nbsp;&nbsp; <img src=\"compon.gif\" align=\"absmiddle\"> <?php print $compOn; ?>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img src=\"compoff.gif\" align=\"absmiddle\"> <?php print $compOff; ?> </td>
  155. </tr>
  156. </table>
  157. <?php
  158. $time_end = getmicrotime();
  159. $stoper = $time_end - $time_start;
  160. print '<p class=\"stopka\">*-Nie pokazuje wyłączonych<br />';
  161. printf('Generated in <b>%0.2f sec.</b></p>', $stoper);
  162. ?>
  163. </body>
  164. </html>
alchemic
Witam

mam to odpalone na Alacer 2.0 i nie dziala tz dziala ale wyswietla ze nikt nie jest polaczony.. a 100% ze jest bo normalny ping dziala... dlaczego ?

a ten ostatni :

"Brak dostępu!" questionmark.gif
Bakus
"Ten ostatni" był przez jakiś czas dostępny, ale już nie jest. Jeżeli byś zerknął w źródło (linijka nr 3), to byś zobaczył, że skrypt nie akceptuje komputerów z poza sieci wewnętrznej...
Poza tym "Skrypt jest dostosowany do wyciągan ia danych z panelu administracyjnego routera Asmax AR-701u"...


Porponuję Ci uruchomić skrypt BzikOSa z pierwszego postu i ustawić w nim:
  1. <?php
  2. $config['os'] = 'windows';
  3.  
  4. $config['scanMethod'] = 'ping';
  5. ?>


Pod windowsem nie ma innej metody jak ping - nmap działa TYLKO pod systemami rodziny unix i linux.
dr_bonzo
Cytat
od windowsem nie ma innej metody jak ping - nmap działa TYLKO pod systemami rodziny unix i linux.

Jest wersja nmapa dla windowsa -- instalowalem kiedys.
boya
Cytat(BzikOS @ 2003-12-15 00:54:34)
Podmienione fragmenty kodu z dodaną kolumną na nr GG.

Hmmm....
a server na którym sie hostuje na to:

Fatal error: Call to undefined function: scan() in /home/studinf/public_html/strony/1.php on line 37

pozdr.
BzikOS
Cytat(boya @ 2005-02-10 19:41:44)
Cytat(BzikOS @ 2003-12-15 00:54:34)
Podmienione fragmenty kodu z dodaną kolumną na nr GG.

Hmmm....
a server na którym sie hostuje na to:

Fatal error: Call to undefined function: scan() in /home/studinf/public_html/strony/1.php on line 37

pozdr.

Przesadziłeś z podmienianiem.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.