Jak mogę sprawdzić, czy zdalny komputer jest online w celu uzyskania dostępu do ssh / script?


12

Piszę skrypt, który utworzy kopię zapasową danych z mojego laptopa na serwerze Ubuntu. Aby to zrobić, szukam polecenia (ba) sh, aby sprawdzić, czy serwer jest dostępny przed rozpoczęciem tworzenia kopii zapasowej. coś jak pingna porcie 22, który zwraca wartość logiczną.

Jak mogę to zrobić?

Odpowiedzi:


21

Lubię to:

nc -z hostname 22 > /dev/null
echo $?

Jeśli jest, 0to jest dostępny. Jeśli tak, 1to nie jest.


Należy pamiętać, że ta opcja działa tylko z pakietem netcat-openbsd, w przeciwnym razie opcja nie jest dostępna:nc: invalid option -- 'z'
valentin_nasta

bez -wopcji nc utknie na zawsze na Ubuntu
Edward Torvalds

czy możemy mieć podobne polecenie z okien
Harshal Zope

14

Użyj netcat :

nc -z localhost 22

Z strony podręcznika

 -z      Specifies that nc should just scan for listening daemons,
         without sending any data to them.

Cholera! Pobiłeś mnie do tego.
bahamat

2
dzięki, nie wiedziałem nc, zastanawiałem się, dlaczego nc -z -w 2 192.168.0.123(-w to opcja limitu czasu, w sekundach) nie limit czasu: |
Amo__

Musisz także podać port. nc -z -w 2 192.168.0.123 22 działa zgodnie z oczekiwaniami.
Chris

+1 za zw. ktokolwiek skanujesz nadal może uzyskać informacje o tym, kto wykonał skanowanie tylko bez podaniaidentification string
amrx

5

Alternatywny:

nc -vzw 1 hostname 22

należy wybrać odpowiedź, bez -wopcji ncutknie na zawsze na Ubuntu
Edward Torvalds

Bool może być użyty jak =>nc -zw 2 examplehost.com 22 && { echo "You can call your backup function" ; } || { echo "SSH Unavailable" ; }
Pan Pundir

3

Co powiesz na

MACHINE=192.168.0.8
exec 3>/dev/tcp/${MACHINE}/22
if [ $? -eq 0 ]
then
    echo "SSH up"
else
    echo "SSH down"
fi

Nie zawsze zakładaj, że to Linux. Jego laptop może być komputerem Mac. A Debian wyłącza się /dev/tcp. Ubuntu wywodzące się z Debiana może również (ale nie mam konkretnej wiedzy). Ale jeśli /dev/tcpjest dostępny, to tak, jest to całkowicie poprawne.
bahamat

dziękuję za twoją opinię, napisałem to na komputerze Mac.

dzięki, nawet jeśli exec 3>/dev/tcp/${HOST}/22wygląda naprawdę „dziwacznie”
Amo__

To jedyna odpowiedź, która nie wymaga instalowania dodatkowych pakietów.
Chen A.
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.