![Как проверить, запущен ли UFW программным способом](https://rvso.com/image/1083748/%D0%9A%D0%B0%D0%BA%20%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%B8%D1%82%D1%8C%2C%20%D0%B7%D0%B0%D0%BF%D1%83%D1%89%D0%B5%D0%BD%20%D0%BB%D0%B8%20UFW%20%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D1%8B%D0%BC%20%D1%81%D0%BF%D0%BE%D1%81%D0%BE%D0%B1%D0%BE%D0%BC.png)
В большинстве служб (например, 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