14 votes

Redémarrage du réseau par SSH

Sur le serveur A, je veux envoyer les commandes suivantes au serveur B via ssh.

service network stop
sleep 5
service network start

Le problème, c'est que si je lance un "arrêt" du réseau, ma connexion ssh actuelle est également perdue. Je ne peux donc pas exécuter les commandes suivantes (sleep 5 et service network start). Notez que je ne peux pas utiliser (service network restart).

Quelqu'un a-t-il une solution pour résoudre ce problème ?

9voto

Si vous le faites de manière interactive, pourquoi ne pas lancer un screen session ? Cela ressemblerait à quelque chose comme ceci :

screen

(scren Shell démarre)

service network restart

(La session SSH se déconnecte, mais le redémarrage du réseau se poursuit dans la session écran)

(Attendre quelques secondes)

(Se connecter à nouveau à l'hôte une fois le redémarrage terminé)

screen -r

(Se reconnecter à l'écran et vérifier s'il y a des erreurs)

Selon moi, il est toujours effrayant de redémarrer une interface réseau à distance. Que se passe-t-il lorsqu'elle ne se rétablit pas ? Avez-vous une console ou un autre moyen d'accéder à l'hôte si quelque chose de grave se produit ?

5voto

Seth Robertson Points 1119

Les commandes exactes disponibles pour ce faire varient en fonction de la distribution Linux. Une option assez standard consiste à programmer une tâche "at" pour 5 secondes dans le futur afin de redémarrer le réseau. Une autre option consiste à utiliser la commande nohup commande.

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

D'autres distributions disposent de la commande daemon pour transformer le programme résultant en un daemon qui n'est plus associé au Shell.

3voto

Zano Points 315

Un moyen très simple d'y parvenir est d'utiliser l'opérateur and :

service network stop && sleep 5 && service network start

2voto

MasterMastic Points 433

Essayez ceci (en installant éventuellement un cron) :

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

Ensuite, déconnectez-vous, attendez 6 minutes et reconnectez-vous.

2voto

user712092 Points 351

Cela fonctionne avec les versions modernes de Debian et Ubuntu, alors que toutes les autres réponses ne fonctionneront pas.

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

N'oubliez pas que le rétablissement de l'interface peut prendre un certain temps. Dans mon cas, environ 15 secondes car j'ai un lien.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X