LINUX.ORG.RU
ФорумAdmin

Отключение opensnitch, когда нет интернета

 ,


0

1

Захотелось, чтобы при выключенном интернете была остановлена служба opensnitch.service (изначально хотел, чтобы работа приостановливалась, но приостановить работу можно только через сам opensnitch). Сначала я сделал такой скрипт (более сложный):

#!/bin/bash
# Проверка состояния сети
 NETWORK_STATUS=$(nmcli -t networking connectivity check | grep "full" > /dev/null && echo "up")

 # Если "up", то opensnitch включается
 if [ "$NETWORK_STATUS" = "up" ]; then
   systemctl start opensnitch.service
 else
   systemctl stop opensnitch.service
 fi

Но потом понял, что для него нужна отдельная служба или задание, которое должно постоянно проверять соединение, что мне не понравилось, поэтому я решил использовать NetworkManager-dispatcher, написав более простой скрипт и поместив его в папку dispatcher.d:

#!/bin/bash
if [ "$CONNECTIVITY STATE" = "limited" ]; then
   systemctl stop opensnitch.service
fi

if [ "$CONNECTIVITY STATE" = "full"]; then
   systemctl start opensnitch.service
fi

Однако он, наверное, не может запускать скрипты от рута. Например, когда я перезагружал службу (systemctl restart NetworkManager.service) со вторым скриптом, в котором указал перед systemctl, sudo, я увидел, что значок показывающий состояние сети исчез. Когда я убрал sudo он появился вновь, но изменения с opensnitch в зависимости от состояния сети не происходили.

Подскажите, пожалуйста, как сделать простой и рабочий скрипт.


https://man.archlinux.org/man/NetworkManager-dispatcher.8.en

Напиши простенький скрипт, в котором ты сможешь вывести в файл информацию от имени какого пользователя запускается скрипт.

Напиши скрипты остановки сервиса и запуска.

Настрой sudo на разрешение выполнения этих тебе скриптов от имени sudo для того пользователя, от имени которого dispatcher запускает скрипты.

kostik87 ★★★★★
()