Come posso verificare che un computer remoto sia online per l'accesso a ssh / script?


12

Sto scrivendo uno script che eseguirà il backup dei dati dal mio laptop su un server Ubuntu. Per fare ciò, sto cercando un comando (ba) sh per verificare se il server è disponibile prima di avviare il backup. qualcosa come pingsulla porta 22 che restituisce un valore booleano.

Come posso fare questo?

Risposte:


21

Come questo:

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

Se è 0allora è disponibile. Se lo 1è, non lo è.


Nota che questa opzione funziona solo con il pacchetto netcat-openbsd, altrimenti l'opzione non è presente:nc: invalid option -- 'z'
valentin_nasta

senza l' -wopzione nc rimarrà bloccato per sempre su Ubuntu
Edward Torvalds il

possiamo avere un comando simile da Windows
Harshal Zope il

13

Usa netcat :

nc -z localhost 22

Dalla manpage

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

Dannazione! Mi hai battuto sul tempo.
bahamat,

2
grazie, non sapevo nc, mi chiedevo perché nc -z -w 2 192.168.0.123(-w è l'opzione di timeout, in secondi) non va in timeout: |
Amo__

Devi anche specificare una porta. nc -z -w 2 192.168.0.123 22 funziona come previsto.
chris,

+1 per il zinto. chiunque identification string
esegua

5

Alternato:

nc -vzw 1 hostname 22

questa dovrebbe essere la risposta selezionata, senza -wopzione ncrimarrà bloccata per sempre su Ubuntu
Edward Torvalds

Bool può essere usato come =>nc -zw 2 examplehost.com 22 && { echo "You can call your backup function" ; } || { echo "SSH Unavailable" ; }
Mr. Pundir il

3

Che dire

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

Non dare per scontato che sia Linux. Il suo laptop potrebbe essere un Mac. E Debian disabilita /dev/tcp. Anche Ubuntu derivato da Debian (ma non ho una conoscenza specifica). Ma se /dev/tcpè disponibile, allora sì, questo è perfettamente valido.
bahamat,

grazie per il tuo feedback, l'ho scritto su un Mac.

grazie, anche se exec 3>/dev/tcp/${HOST}/22sembra davvero "bizzarro"
Amo__

Questa è l'unica risposta che non richiede l'installazione di pacchetti aggiuntivi.
Chen A.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.