В большинстве сервисов (например, privoxy) существует очевидный способ для получения сервисного состояния: ps -C [servicename]
Затем путем проверки кода выхода ($?)
: 0: услуга работала 1: не выполнение Дело обстоит не так в ufw (не распознанный как услуга?) sudo service ufw status
всегда выходы с 0, работал ли ufw или нет. Какие-либо предложения для получения ufw программно через код выхода команды раньше проверяли ufw состояние?
Поскольку код выхода, возвращенный 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
просто тихий режим, ничто не записано в стандартный ouput
Для проверки состояния использования 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