Bash скрипт работает при ручном вызове, но не работает при вызове через cron - PullRequest
0 голосов
/ 03 августа 2020

У меня есть два 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

...