Como posso verificar se um computador remoto está online para acessar ssh / script?

11

Estou escrevendo um script que fará backup dos dados do meu laptop em um servidor Ubuntu. Para fazer isso, estou procurando um comando (ba) sh para testar se o servidor está disponível antes de iniciar o backup. algo como pingna porta 22 que retorna um booleano.

Como posso fazer isso?

Amo__
fonte

Respostas:

20

Como isso:

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

Se estiver, 0então está disponível. Se é, 1então não é.

bahamat
fonte
Note-se que esta opção só funciona com o pacote netcat-openbsd, caso contrário, a opção não estiver presente:nc: invalid option -- 'z'
valentin_nasta
sem -wopção nc vai ser preso para sempre no Ubuntu
Edward Torvalds
12

Use netcat :

nc -z localhost 22

Da página de manual

 -z      Specifies that nc should just scan for listening daemons,
         without sending any data to them.
chris
fonte
Droga! Você chegou antes de mim.
bahamat 02/02
2
obrigado, não sabia nc, eu queria saber por que nc -z -w 2 192.168.0.123(-w é a opção de tempo limite, em segundos) não tempo limite: |
Amo__ 02/02
Você precisa especificar uma porta também. nc -z -w 2 192.168.0.123 22 funciona conforme o esperado.
Chris
+1 para o zdentro. quem você ainda varredura pode obter informações de quem fez a varredura única sem fornecer oidentification string
amrx
5

Alternar:

nc -vzw 1 hostname 22
Mr. Pundir
fonte
este deve ser selecionado resposta, sem -wopção ncvai ser preso para sempre no Ubuntu
Edward Torvalds
Bool pode ser usado como =>nc -zw 2 examplehost.com 22 && { echo "You can call your backup function" ; } || { echo "SSH Unavailable" ; }
Sr. Pundir 23/02/19
3

A respeito

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

fonte
Nem sempre assuma que é Linux. Seu laptop pode ser um Mac. E o Debian desativa /dev/tcp. O Ubuntu sendo derivado do Debian também pode (mas não tenho conhecimento específico). Mas se /dev/tcpestiver disponível, sim, isso é perfeitamente válido.
bahamat 02/02
Obrigado pelo seu feedback, eu escrevi em um Mac.
graças, mesmo se exec 3>/dev/tcp/${HOST}/22parece realmente "bizarro"
Amo__
Esta é a única resposta que não requer a instalação de pacotes adicionais.
Chen A.