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?

Respostas:


20

Como isso:

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

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


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.

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

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

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.
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.