7

Сплит вопрос: этот другой здесь для Windows.

Linux: Самый быстрый способ отключить интернет (сохранение локальной сети) из командной строки?

Я думаю, что самый простой способ деактивировать Интернет (не LAN) в Linux - это удалить шлюз по умолчанию, поэтому при условии, что LAN - это 10.0.2.0/24, а шлюз - 10.0.2.1:

`sudo /sbin/route del default gw 10.0.2.1`

Чтобы активировать интернет:

`sudo /sbin/route add default gw 10.0.2.1`

Но, даже если это простая строка, требуется сначала определить IP-адрес шлюза по умолчанию:

`sudo /sbin/route`

Я собираюсь создать некоторые сценарии оболочки общего назначения, которые должны включать / отключать Интернет (но поддерживать работу локальной сети), поэтому, похоже, мне понадобятся некоторые (¿ grep , может быть?) операции по фильтрации и обнаружению точного IP-номера шлюза (это могут быть 10.0.2.1, 127.0.0.1, 127.0.50.1, 192.168.0.1 ... и т. д.), если не удастся найти более простую командную строку.
Есть идеи, пожалуйста?

1 ответ1

7

На * nix, чтобы найти шлюз:

GW="$(sudo /sbin/route -n | awk '$1=="0.0.0.0" {print $2; exit}')"
sudo /sbin/route del default gw "$GW"
echo "$GW" >~/my_tmp_file

Последняя строка сохраняет значение в файле для последующего использования, когда вы хотите перезапустить сеть:

sudo /sbin/route add default gw "$(cat ~/my_tmp_file)"

Примечание . Если имеется более одного шлюза по умолчанию, потребуется, чтобы этот код снова выполнялся для каждого или был переписан для поддержки этого.

Как это работает: вышеприведенная команда awk может захватить шлюз, потому что вывод route -n выглядит следующим образом:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.0.2.1        0.0.0.0         UG    0      0        0 eth0
10.0.2.0        0.0.0.0         255.255.255.0   U     0      0        0 eth0

Интернет-шлюз - это тот, который разрешает назначение в любом месте (0.0.0.0). Таким образом, скрипт awk проходит через эту строку вывода построчно, глядя на первый столбец (в нотации $1 называется awk). Когда первый столбец находится в любом месте назначения, он печатает второй столбец, который является шлюзом. Выходные данные команды awk затем записываются в переменную оболочки GW . Затем оболочку можно попросить заменить $GW на любую команду, которая в этом нуждается.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .