Domanda ssh si blocca se la macchina remota è spenta


Voglio periodicamente registrare lo stato di una particolare interfaccia nella mia macchina remota. Il seguente codice fa il lavoro.

#!/bin/bash
while [ "1" ]
do
    ifconfig usb0 &>/dev/null
    if [ "$(echo $?)" == "0" ]
    then
        sshpass -p passwd ssh -o ConnectTimeout=5 duser@10.1.1.3 ifconfig wave-data
    else
        echo "usb0 disconnected"
    fi
    sleep 0.2
done

La macchina remota è connessa tramite l'interfaccia usb0. Voglio che questo codice sia robusto. Quindi lo sto testando spegnendo e accendendo spesso la mia macchina remota. Il problema è a volte quando spengo la macchina, il codice è bloccato e non stampa nulla. Suppongo che se ssh viene interrotto nel mezzo dell'esecuzione, si blocca. Come posso superare questo? Esiste un modo alternativo per eseguire il comando su una macchina remota e ottenere l'output? grazie.


1
2017-09-24 04:02


origine


Penso che la trap l'utilità potrebbe essere utile per te. Leggi come usarlo Qui. - Lucio


risposte: