Piszę skrypt wake on lan dla zestawu naszych komputerów laboratoryjnych. Mamy bazę danych sqlite z listą nazw hostów komputerów, adresów IP i MAC, a obecnie pinguję każdą z nich za pomocą „-c1”, aby nie działała bez końca - ale nawet to zajmuje trochę czasu, czy jest szybszy sposób na uzyskanie odpowiedzieć zamiast pingować? Używanie polecenia ping wydaje się spowalniać skrypt, ponieważ wymaga on odpowiedzi ping, aby kontynuować.
Wielkie dzięki za wszelkie sugestie!
źródło
Do tego właśnie został zaprojektowany Fping. http://fping.sourceforge.net/
Następnie musisz przeanalizować dane wyjściowe zamiast polegać na kodzie zwrotnym, ale jest to o wiele szybsze niż normalne pingowanie.
źródło
Działa to tylko dla jednego lub dwóch komputerów, ale jeśli podłączysz je bezpośrednio do komputera odpowiedzialnego za sprawdzenie ich statusu, możesz
ethtool
sprawdzić, czy łącze jest aktywne, czy nie.źródło
ethtool {network_interface} | grep "Link detected" | cut -f 3 -d ' '
wróci,yes
jeśli urządzenie jest podłączone, ano
jeśli nie jest.Co możesz zrobić, ping pingować adres rozgłoszeniowy, co powinno spowodować, że wszystkie komputery odpisują. Następnie możesz porównać tę listę z tym, co masz w SQLite, aby upewnić się, że wszystkie komputery działają.
Poza tym ping jest prawdopodobnie najszybszym sposobem na upewnienie się, że komputer nie śpi w sieci. Jak wspomniano w drugiej odpowiedzi, nie zapewnia to żadnych naprawdę przydatnych danych. Jeśli masz możliwość instalowania skryptów, możesz dodać cronjob do pingowania serwera centralnego, uruchomić zadanie lub po prostu wysłać listę procesów do serwera centralnego, który zarejestruje żądanie. Następnie po prostu sprawdź, co powie ci, jeśli masz jakieś problemy bez konieczności ręcznego sprawdzania za każdym razem.
źródło
Ganglia używa ruchu multiemisji do monitorowania wielu hostów w klastrze, być może mógłbyś użyć czegoś podobnego? Zakłada się, że sprzęt sieciowy zezwala na ruch multiemisji między wszystkimi hostami a systemem monitorowania.
źródło
Miałem ten sam problem i wpadłem na następujący (szybki i brudny) skrypt. To zasadniczo wysyła wszystkie pingi jako osobne zadania równolegle i skanuje całą podsieć / 24 w 3 sekundy; zwróć uwagę, że z jakiegoś powodu nie zadałem sobie trudu, aby dowiedzieć się, że nie mogę tutaj użyć kodu wyniku ping, ale grep -v wykonał zadanie:
źródło
W C
źródło
Odkryłem, że
fping -r0 ...
zapewniają najszybszą odpowiedź.Opcja
-r
(ponów) wydaje się szybsza niż podobna-c
(liczba). Użycie-r0
wyników powoduje wysłanie tylko jednego polecenia ping, a wynik jest znacznie skrócony w porównaniu do innych opcji.W moim systemie ...
Prowadzi do...
Trochę masowania, aby pozbyć się
ICMP
wiadomości, daje mi ...Jeśli chodzi o szybkość,
fping
na tym starym dwurdzeniowym procesorze Intel 1,8 GHz z 4 GB pamięci RAM jest ...A
grep
isort
wydaje się tylko dodać 0.001-0.004s do czasu ...UWAGI
ICMP
Wiadomość nie występuje na każdym biegu.2>&1
to konieczne, abyICMP
komunikat nie pojawiał się na wyjściu, gdy jest wysyłanystderr
zamiaststdout
.źródło