Reiniciando a rede através do SSH

8

No servidor A, desejo emitir os seguintes comandos para o Servidor B por meio do ssh.

service network stop
sleep 5
service network start

O problema é que eu emiti uma rede 'stop', então minha conexão ssh atual também foi perdida. Portanto, não posso executar os comandos sucessivos (sleep 5 e início da rede de serviço). Note que não posso usar (reiniciar a rede de serviço).

Alguém tem uma solução / solução para isso?

    
por Carmen 08.06.2011 / 01:23

7 respostas

7

Se você estiver fazendo isso de forma interativa, por que não iniciar uma sessão screen ? Seria algo parecido com isto:

screen

(o shell scren é iniciado)

service network restart

(A sessão SSH é desconectada, mas a reinicialização da rede continua na sessão de tela)

(aguarde alguns segundos)

(SSH de volta ao host assim que a reinicialização terminar)

screen -r

(reconecte a tela e verifique se há erros)

IMHO, é sempre assustador reiniciar uma interface de rede remotamente. O que acontece quando não volta? Você tem um console ou outros meios no host se algo de ruim acontecer?

    
por 11.06.2011 / 15:32
4

Os comandos exatos disponíveis para isso variam com base na distribuição do Linux. Na opção que é bastante padrão é agendar e "at" trabalho por 5 segundos no futuro para reiniciar a rede. Outra é usar o comando nohup .

echo "sleep 5; /etc/init.d/networking start" | at now
nohup sh -c 'sleep 5; /etc/init.d/networking start' &

Outras distribuições possuem o comando daemon para transformar o programa resultante em um daemon que não está mais associado ao shell.

    
por 08.06.2011 / 01:25
2

Uma maneira muito simples de fazer isso é usando o operador e:

service network stop && sleep 5 && service network start
    
por 08.06.2011 / 01:35
1

Por que não colocá-lo em um shell script e executá-lo via SSH?

    
por 08.06.2011 / 01:24
1

Tente isso (talvez instalando o cron, se necessário):

$ at now+5min
at> service network stop
at> sleep 5
at> service network start
at> [control-D]

Em seguida, faça logout, aguarde 6 min e relogine

    
por 11.06.2011 / 15:23
1

Isso funciona com o Debian moderno e o Ubuntu, enquanto todas as outras respostas não funcionarão.

screen
sudo ifdown --exclude=lo -a && sudo ifup --exclude=lo -a

Tenha em mente que pode demorar um pouco para recuperar a interface. No meu caso, cerca de 15 segundos, como eu tenho um vínculo.

    
por 23.10.2015 / 10:39
0

Parece que você quer a tela ou tmux . Estes permitirão que você preserve sua sessão através da perda de uma conexão de rede. Eles são realmente muito úteis, quase todas as minhas sessões de terminal são exibidas na tela.

    
por 10.06.2011 / 05:17