Как проверить, запущен ли UFW программным способом

Как проверить, запущен ли UFW программным способом

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

решение1

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

решение2

Для проверки статуса 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

Связанный контент