J'utilise une machine Linux construite sur mesure, donc toutes les commandes Linux ne sont pas disponibles .
J'exécute des commandes liées au réseau, j'ai donc besoin de définir une passerelle par défaut juste avant d'exécuter ma commande, puis de supprimer cette passerelle immédiatement après.
Pour ce faire, j'exécute toutes mes commandes sur une seule ligne:
/sbin/route add default gw 10.10.10.10;my command;/sbin/route del default gw 10.10.10.10;
Le problème est que, pour une raison quelconque, j'ai trouvé 2 passerelles par défaut sur la même machine, ce qui a provoqué l'échec de toutes mes commandes, car même si je configure ma passerelle par défaut avant d'exécuter mon test, elle est toujours foirée et ne peut pas exécuter mon test.
Existe-t-il un moyen de supprimer TOUTES les passerelles par défaut dans une seule commande ? J'ai une grande quantité de machines qui augmentent et il ne sera pas pratique de planter un script sur chaque machine. J'ai besoin d'une commande aussi simple que celle-ci:
/sbin/route del all default;set my default gw;mycommand;/sbin/route del all default;
Tout ce que j'ai trouvé jusqu'à présent est une commande pour supprimer une passerelle par défaut, mais pas toutes
/sbin/route del default
qui ne fonctionneront pas pour moi.
/sbin/route
l'aide affiche ce qui suit
/sbin/route --help
Usage: route [{add|del|delete}]
Edit the kernel's routing tables
Options:
-n Don't resolve names
-e Display other/more information
-A inet Select address family
Pour supprimer toutes les passerelles par défaut à l'aide de
ip
la source
Si votre code rompt avec plusieurs passerelles par défaut, vous devriez probablement également rechercher plusieurs adresses IP par appareil.
Comme vous avez déjà reçu une réponse, voici une autre approche car vous ne devez JAMAIS modifier la configuration de votre système simplement parce que vous voulez exécuter / tester un script. Que diriez-vous d'utiliser des espaces de noms réseau à la place. Pour une brève introduction sur la façon d'ajouter des périphériques virtuels à votre NS (espace de noms), consultez http://code.google.com/p/coreemu/wiki/Namespaces .
Pour créer un espace de noms nommé test et exécuter une commande sous cet espace de noms, exécutez simplement
où COMMAND peut être par exemple votre shell ou simplement le script serveur.
la source
Toutes les réponses sont excellentes mais j'ai résolu ce problème en utilisant une approche différente, j'ai utilisé la commande pour ajouter une seule passerelle par défaut, mais échoue s'il y en a déjà une. Et donc éventuellement supprimer la mauvaise passerelle à la fin de la commande. Cela devrait fonctionner sur la deuxième fois isa.
ip route add default via my-gateway
ip route del default
la source