Как проверить, работает ли ufw программно

4

В большинстве сервисов (например, privoxy) есть чистый способ получить статус сервиса: ps -C [servicename] Затем, проверив код выхода ($?) : 0: служба запущена 1: не работает Это не относится к ufw (не признается как услуга?) sudo service ufw status всегда выходит с 0, был ли ufw запущен или нет. Любые предложения по программному обеспечению ufw через код выхода команды, используемой для проверки состояния UFW?

    
задан pkaramol 07.10.2014 в 18:01
источник

2 ответа

7

Поскольку код выхода, возвращаемый sudo ufw status , всегда равен 0, вам просто нужно grep для значения статуса:

$ sudo ufw status
Status: inactive
$ sudo ufw status | grep -qw active
$ echo $?
1

Чтобы правильно работать, вам нужно использовать опцию -w , из man grep :

   -w, --word-regexp
          Select  only  those  lines  containing  matches  that form whole
          words.  The test is that the matching substring must  either  be
          at  the  beginning  of  the  line,  or  preceded  by  a non-word
          constituent character.  Similarly, it must be either at the  end
          of  the  line  or  followed by a non-word constituent character.
          Word-constituent  characters  are  letters,  digits,   and   the
          underscore.

-q - это только тихий режим, ничего не записывается в стандартный вывод

    
ответ дан Sylvain Pineau 07.10.2014 в 20:40
источник
1

Чтобы проверить состояние использования UFW

sudo ufw status verbose

Вывод похож на

my@machine:~$ sudo ufw status verbose
[sudo] password for youruser:
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing)
New profiles: skip
    
ответ дан Jan 07.10.2014 в 18:03