Como verificar se o ufw está sendo executado programaticamente

Como verificar se o ufw está sendo executado programaticamente

Na maioria dos serviços (por exemplo, privoxy), existe uma maneira limpa de obter o status do serviço: ps -C [servicename] Em seguida, verificando o código de saída ($?): 0: o serviço estava em execução 1: não em execução Este não é o caso do ufw (não reconhecido como um serviço?) O sudo service ufw statussempre termina com 0, esteja o ufw em execução ou não. Alguma sugestão para obter o ufw programaticamente por meio do código de saída do comando usado para verificar o status do ufw?

Responder1

Como o código de saída retornado sudo ufw statusé sempre 0, você só precisa greppara o valor do status:

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

Para funcionar corretamente você deve usar a -wopção de 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é apenas o modo silencioso, nada é gravado na saída padrão

Responder2

Para verificar o status do uso do UFW

sudo ufw status verbose

A saída é semelhante a

my@machine:~$ sudo ufw status verbose
[sudo] password for youruser:
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing)
New profiles: skip

informação relacionada