Я использую специально созданную машину Linux, поэтому не все команды Linux доступны .
Я выполняю команды, связанные с сетью, поэтому мне нужно установить шлюз по умолчанию непосредственно перед выполнением команды, а затем сразу же удалить этот шлюз.
Для этого я запускаю все свои команды в одну строку:
/sbin/route add default gw 10.10.10.10;my command;/sbin/route del default gw 10.10.10.10;
Проблема в том, что по какой-то причине я однажды обнаружил 2 шлюза по умолчанию на одной машине, что привело к сбою всех моих команд, потому что даже если я установил шлюз по умолчанию перед запуском теста, он все еще не работает и не может запустить мой тест.
Так есть ли способ удалить все шлюзы по умолчанию в одной команде ? У меня есть большое количество машин, которые растут, и не будет практичным устанавливать скрипт на каждой машине. Мне нужна такая простая команда:
/sbin/route del all default;set my default gw;mycommand;/sbin/route del all default;
Все , что я нашел до сих пор является команда для удаления в шлюз по умолчанию , но не все из них
, /sbin/route del default
которые не будут работать на меня.
/sbin/route
справка отображает следующее
/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
Чтобы удалить все шлюзы по умолчанию, используя
ip
источник
Если ваш код не работает с несколькими шлюзами по умолчанию, вам, вероятно, следует также использовать несколько IP-адресов для каждого устройства.
Поскольку вы уже получили ответ, здесь есть другой подход, так как вы НИКОГДА не должны изменять конфигурацию вашей системы только потому, что вы хотите запустить / протестировать скрипт. Как насчет использования сетевых пространств имен вместо этого. Для краткого введения, как добавить виртуальные устройства в ваше NS (пространство имен), посмотрите http://code.google.com/p/coreemu/wiki/Namespaces .
Чтобы создать пространство имен с именем test и запустить команду в этом пространстве имен, просто запустите
где COMMAND может быть, например, вашей оболочкой или просто серверным скриптом.
источник
Все ответы хороши, но я решил эту проблему другим способом, я использовал команду, чтобы добавить только один шлюз по умолчанию, но потерпел неудачу, если он уже есть. И, таким образом, в конце концов удалите неправильный шлюз в конце команды. Это должно работать во второй раз.
ip route add default via my-gateway
ip route del default
источник