ping
to sposób na sprawdzenie, czy host żyje i jest podłączony. (Jeśli host żyje, ale jest rozłączony lub reaguje wolno, nie można odróżnić tego od martwego).
Opcje obsługiwane przez to ping
polecenie różnią się w zależności od systemu. Będziesz chciał upewnić się, że nie zapętla się wiecznie, ale powraca po kilku sekundach, jeśli nie otrzyma odpowiedzi.
W przypadku FreeBSD i Linux iputils ping -c 1 -W 1 >/dev/null
wysyła pojedynczy ping i odczekuje 1 sekundę. Nie trzeba analizować danych wyjściowych: komenda zwraca 0, jeśli otrzymała polecenie ping, a w przeciwnym razie niezerowe (nieznana nazwa hosta, brak trasy do hosta, brak odpowiedzi). Niektóre implementacje mogą wymagać różnych flag (np. -w
Zamiast -W
w FreeBSD), sprawdź instrukcję w systemie.
if ping -c 1 -W 1 "$hostname_or_ip_address"; then
echo "$hostname_or_ip_address is alive"
else
echo "$hostname_or_ip_address is pining for the fjords"
fi
answered
odpowiedź. OP specjalnie poprosiłmore ways to see if a given host is up
, oprócz tegoping
, czego ta odpowiedź nie zawiera."Because of the load it can impose on the network, it is unwise to use ping during normal operations or from automated scripts."
Ping jest świetny, aby uzyskać szybką odpowiedź na temat tego, czy host jest podłączony do sieci, ale często nie powie ci, czy host żyje, czy nie, lub czy nadal działa zgodnie z oczekiwaniami. Wynika to z faktu, że odpowiedzi ping są zwykle obsługiwane przez jądro, więc nawet jeśli każda aplikacja w systemie uległa awarii (np. Z powodu awarii dysku lub braku pamięci), często nadal otrzymujesz odpowiedzi ping i możesz założyć, że komputer jest działa normalnie, gdy sytuacja jest wręcz przeciwna.
Sprawdzanie usług
Zazwyczaj tak naprawdę nie obchodzi Cię, czy host jest nadal online, ale naprawdę zależy Ci na tym, czy komputer nadal wykonuje jakieś zadanie. Jeśli więc możesz bezpośrednio sprawdzić zadanie, będziesz wiedział, że host działa i że zadanie nadal działa.
Na przykład na zdalnym hoście, na którym działa serwer WWW, możesz zrobić coś takiego:
Jeśli działa SSH i masz skonfigurowane klucze do logowania bez hasła, masz kilka dodatkowych opcji, na przykład:
Działa to przez SSH'ing do hosta i uruchomienie
true
polecenia, a następnie zamknięcie połączenia.ssh
Komenda zwróci jedynie sukces jeśli komenda może być prowadzony z powodzeniem.Zdalne testy przez SSH
Możesz to rozszerzyć, aby sprawdzić określone procesy, takie jak upewnienie się, że
mysqld
działa na komputerze:Oczywiście w takim przypadku lepiej byłoby uruchomić coś takiego
monit
na obiekcie docelowym, aby zapewnić nieprzerwane działanie usługi, ale jest to przydatne w skryptach, w których chcesz wykonać tylko jakieś zadanie na komputerze A, o ile komputer B jest na to gotowy .Może to być coś w rodzaju sprawdzenia, czy na komputerze docelowym jest podłączony określony system plików przed wykonaniem
rsync
do niego, aby nie przypadkowo zapełnić jego główny dysk, jeśli z jakiegoś powodu nie zainstalowano dodatkowego systemu plików. Na przykład upewni się, że/mnt/raid
przed kontynuowaniem zostanie zamontowany na komputerze docelowym.Usługi bez klienta
Czasami nie ma łatwego sposobu na połączenie się z usługą i po prostu chcesz sprawdzić, czy akceptuje ona przychodzące połączenia TCP, ale kiedy przejdziesz
telnet
do celu na danym porcie, po prostu tam siedzi i nie rozłącza się, co oznacza robienie tego w skrypcie spowoduje zawieszenie się.Choć nie jest tak czysty, nadal możesz to zrobić za pomocą programów
timeout
inetcat
. Na przykład sprawdza, czy urządzenie akceptuje połączenia SMB / CIFS na porcie TCP 445, dzięki czemu można sprawdzić, czy działa udostępnianie plików systemu Windows, nawet jeśli nie masz hasła do zalogowania lub narzędzia klienta CIFS nie są Zainstalowano:źródło