reiniciando o ssh para a máquina remota

1

Eu quero escrever um script bash que execute alguns comandos em um servidor remoto via ssh. Então eu preciso reiniciar o servidor remoto, conectar novamente via ssh e executar mais comandos.

Estou usando este código:

    ssh $theip 'sudo reboot'
    echo "starting sleep---1"
        sleep 30
        echo " finished sleeping1"
        while ! ping -c 1 $theip &>/dev/null; do echo "waiting..."; done
        echo "starting sleep---2"
        sleep 45
        echo " finished sleeping2"
        echo "finished rebooting"
ssh $theip 'commands....'

O problema é que às vezes o servidor está retornando pings antes que eu possa ssh para ele e, em seguida, o script falhar. Alguns dos meus servidores precisam de mais do que os 45s dormem. Existe algum outro método para fazer isso? Por exemplo, tente ssh no loop while em vez de ping?

Obrigado,

    
por lakerda 19.09.2017 / 17:23

2 respostas

1

Experimente este comando para "ssh":

while true; do command ssh "$@"; [ $? -eq 0 ] && break || sleep 0.5; done

Extraído de: link

    
por 19.09.2017 / 17:52
0

Faça um ls -l no seu /etc/rc3.d ou /etc/rc5.d dependendo do seu nível de execução. A coisa a observar aqui é que o daemon de rede é iniciado antes do daemon ssh. portanto, ping está disponível antes de ssh . Você deve provavelmente wait um pouco mais antes de executar ssh na máquina remota. No meu caso, existem cerca de 19 serviços iniciados após a rede, mas antes do ssh.

lrwxrwxrwx 1 root root 17 Sep  9  2011 S10network -> ../init.d/network
lrwxrwxrwx 1 root root 16 Sep  9  2011 S11auditd -> ../init.d/auditd
lrwxrwxrwx 1 root root 21 Sep  9  2011 S12restorecond -> ../init.d/restorecond
lrwxrwxrwx 1 root root 16 Sep  9  2011 S12syslog -> ../init.d/syslog
lrwxrwxrwx 1 root root 20 Sep  9  2011 S13irqbalance -> ../init.d/irqbalance
lrwxrwxrwx 1 root root 19 Sep  9  2011 S15mdmonitor -> ../init.d/mdmonitor
lrwxrwxrwx 1 root root 19 Sep  9  2011 S18rpcidmapd -> ../init.d/rpcidmapd
lrwxrwxrwx 1 root root 17 Sep  9  2011 S19rpcgssd -> ../init.d/rpcgssd
lrwxrwxrwx 1 root root 15 Sep  9  2011 S20kdump -> ../init.d/kdump
lrwxrwxrwx 1 root root 20 Sep  9  2011 S22messagebus -> ../init.d/messagebus
lrwxrwxrwx 1 root root 24 Sep  9  2011 S23setroubleshoot -> ../init.d/setroubleshoot
lrwxrwxrwx 1 root root 15 Sep  9  2011 S25netfs -> ../init.d/netfs
lrwxrwxrwx 1 root root 15 Sep  9  2011 S25pcscd -> ../init.d/pcscd
lrwxrwxrwx 1 root root 15 Sep  9  2011 S26acpid -> ../init.d/acpid
lrwxrwxrwx 1 root root 19 Sep  9  2011 S26haldaemon -> ../init.d/haldaemon
lrwxrwxrwx 1 root root 14 Sep  9  2011 S26hidd -> ../init.d/hidd
lrwxrwxrwx 1 root root 20 Sep  9  2011 S26lm_sensors -> ../init.d/lm_sensors
lrwxrwxrwx 1 root root 16 Sep  9  2011 S28autofs -> ../init.d/autofs
lrwxrwxrwx 1 root root 15 Sep  9  2011 S50hplip -> ../init.d/hplip
lrwxrwxrwx 1 root root 15 Sep 13  2011 S50snmpd -> ../init.d/snmpd
lrwxrwxrwx 1 root root 14 Sep  9  2011 S55sshd -> ../init.d/sshd
    
por 20.09.2017 / 09:07