Reiniciando a rede por causa do ssh

1

Estou executando isso:

ssh [email protected] '/etc/init.d/networking restart'

Funciona e produz os resultados, mas nunca retorna. Ainda outros comandos fazem. Talvez porque a rede desce (como pretendido). Como posso terminar isso? Eu tentei adicionar um comando de saída, mas nenhum dado.

UPDATE: notei que isso funciona às vezes. O problema parece acontecer se o processo for interrompido e a configuração da interface remota estiver em um estado desconhecido. Ainda não consigo rastrear exatamente o que causa o enforcamento.

    
por mahemoff 13.02.2014 / 19:16

3 respostas

1

Talvez o comando de reinicialização esteja sendo interrompido quando a conexão é perdida (à primeira vista, pedir a um sistema que reinicie sua conexão de rede pela rede parece perigoso). O que você deseja é que networking restart seja executado independentemente do terminal de controle. Eu adicionaria uma entrada crontab assim (coloque-a em /etc/cron.d/checker-thingy maybe):

* * * * * root /path/to/checker-thingy.sh

então checker-thingy.sh seria algo como:

[ -f /tmp/restart-network ] && service networking restart
[ -f /tmp/restart-network ] && rm /tmp/restart-network

Isto é meio horrível e propenso a outros problemas, mas basicamente você verá que irá reiniciar a rede se encontrar um arquivo de sinalização específico em /tmp (e então remover o arquivo para evitar um loop de redefinição de rede).

Em seu script automatizado, você pode fazer:

ssh server-ip 'touch /tmp/restart-network'

e depois de um minuto você deve ver o ciclo da interface de rede conforme solicitado.

    
por roadmr 13.02.2014 / 21:32
0

Eu encontrei esta página muito interessante: link . O comando ssh está aguardando que os fluxos de saída do processo remoto sejam fechados, de modo que ele será bloqueado pela rede sendo desligada.

Então (testado):

ssh user@host "sleep 60 &" 

retornará após 60 segundos, enquanto

ssh user@host  "sleep 60 >/dev/null 2>&1 &" 

retornará imediatamente após o lançamento do comando sleep em segundo plano.

Se isso estiver correto, a solução seria desanexar imediatamente a saída padrão e o erro do shell remoto --- assim (não testado, por favor, verifique):

ssh user@host '/etc/init.d/networking restart >/dev/null 2>&1 &' 

ou se isso ainda disparar uma corrida entre a queda da rede e o fechamento do shell,

ssh user@host '(sleep 10 && /etc/init.d/networking restart ) >/dev/null 2>&1 &'

deve funcionar.

    
por Rmano 17.02.2014 / 20:34
-3

Remova o pacote shh digitando

  • sudo apt-get remove ssh

e reinstalá-lo por:

  • sudo apt-get instala ssh.
por kashminder 13.02.2014 / 19:23