Hej!
Trochę offtopicznie, ale <wazelina> gdzie indziej znajdę ludzi, którzy będą tyle wiedzieli ;-) </wazelina>.
Jestem w trakcie popełniania małego programiku w php, który ma pomóc w serwisowaniu awarii sieci.
Awarii takich, że gdzieś na osiedlu, któryśtam switch się powiesi i ludzie przez niego podpięci nie mają netu.
Programik działa 3 etapowo.
1. Przycisk "odblokuj" robi "sudo ip neigh flush nud all" (czyli zwalnia z trzymania mac-ip)
2. Najobszerniejsza część - przycisk "sprawdź"
a) "arp -n | grep '192.168' | grep -v incomplete | awk {'print $1'}"
- czyli dostaję listę ipków ludzi, którzy w tym momencie są widziani przez arp serwera (trochę toporne, ale ok)
b) listę IPków wrzucam do tabeli, a potem korzystając z baz stworzonych przez LMSa znajduję adresy pocztowe ludzi, których serwer widzi
c) adres wywalam do tabelki, sortuję i dzięki temu wiem, że na ul. Jasnej (15 userów) net działa wszystkim, zaś na ulicy Ciemnej działa tylko mieszkającym pod nr 4 (no i "resetowiec" już wie, którego switcha w pierwszej kolejności sprawdzić)
3. Przycisk zablokuj - "su arp -f"
Acha, oczywiście przycisk "sprawdź" można naciskać nieskończoną ilość razy (pod warunkiem wcześniejszego odblokowania), bo dynamiczna tablica arp ma pełne prawo się zmieniać..
Uff..
Niby wszystko ok, a jednak..
Problem polega na tym, że gdy z shella wywołam linię
arp -n | grep '192.168' | grep -v incomplete | awk {'print $1'}
to w odpowiedzi dostanę np 40 IPków
A jeśli to samo zrobię z poziomu httpd (w tym samym czasie!!)- dostaję 2 - 3 IPki..
Nie mam pojęcia dlaczego..
Niejako intuicyjnie znalazłem częściowe obejście problemu.
Bezpośrednio przed "arp -n" dodałem "sleep 4;"
No ale teraz oczywiście strona sie ładuje 4 sekundy dużej..
I na dodatek wszystko wskazuje na to, że w tablicy wypisuje tylko tych, których arp zobaczył w ciągu tych 4 sekund. Tak więc kilkukrotne naciskanie "sprawdź" pokazuje za każdym razem tylko fragment tego, co analogiczny arp wpisany z linii poleceń.
Macie jakiś pomysł? Z czego to może wynikać? Bo niestety, nie mam zielonego pojęcia...
pozdroofka
Krzysztof 'Xyo' Dendra