У меня есть два Bash скрипта. ufwBlock.sh
включает ufw, а ufwUnblock.sh
отключает
ufwBlock. sh:
#!/bin/bash
if [[ -n `pidof firefox-esr` ]]
then
echo "Firefox is open, time to die (gracefully)...."
kill -15 `pidof firefox-esr`
logger -i Killed Firefox-esr
fi
ufw enable
logger -i enabled UFW
#Test result
pingResult=`ping -c1 aws.com | grep received | awk '{print $4}'`
if [[ -n $pingResult ]]
then
logger ufw enabled. Pinged aws.com but received $pingResult responses
else
pingResult=0
logger ufw enabled. Pinged aws.com and there was no response
fi
#Output rules <- This doesn't work!
rules=`ufw status`
logger $rules
if [[ $pingResult -gt 0 ]]
then
ufw default deny outgoing
logger ufw is enabled but ping got through, so added rule: ufw default to deny outgoing
fi
и ufwUnblock. sh
#!/bin/bash
ufw disable
logger disabled the firewall
Если я запускаю ufwBlock.sh
вручную, он успешно (хотя и медленно) обнаруживает и закрывает Firefox и включает брандмауэр ufw, блокируя доступ inte rnet для моего одержимого видео сына до тех пор, пока не будет запущен сценарий ufwUnblock.sh
. Я установил crontab (как root пользователь)
# m h dom mon dow command
0 20 * * * /root/bin/ufwBlock.sh
30 7 * * * /root/bin/ufwUnblock.sh
Когда cron запускает ufwBlock.sh
, кажется, что он работает (см. Отрывок из journalctl | grep ufw
, ниже), но Я МОГУ ЕЩЕ ПИНГОВАТЬ и запускать ufw status
сообщает, что ufw отключен!
root@Pi7:/home/pi/# journalctl | grep ufw
Aug 02 20:00:01 Pi7 CRON[14554]: (root) CMD (/root/bin/ufwBlock.sh)
Aug 02 20:00:02 Pi7 root[14630]: ufw enabled. Pinged aws.com and received 1 responses
Aug 02 20:00:02 Pi7 root[14634]: ufw is enabled but ping got through, so added rule: ufw default to deny outgoing
root@Pi7:/home/pi# ufw status
Status: inactive
Если я оставлю это до cron, ничего не заблокируется! Это проблема времени (сценарий ускоряется без завершения предыдущего действия)? или я где-то ошибся?
Если актуально, это все на Pi4 uname -a -> Linux Pi7 4.19.118-v7l+ #1311 SMP Mon Apr 27 14:26:42 BST 2020 armv7l GNU/Linux