Захотелось, чтобы при выключенном интернете была остановлена служба 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 в зависимости от состояния сети не происходили.
Подскажите, пожалуйста, как сделать простой и рабочий скрипт.