Como verificar se o ufw está sendo executado programaticamente

4

Na maioria dos serviços (por exemplo, privoxy), há uma maneira simples de obter o status do serviço: %código% Em seguida, verificando o código de saída ps -C [servicename] : 0: o serviço estava sendo executado 1: não está em execução Este não é o caso no ufw (não reconhecido como um serviço?) O ($?) sempre sai com 0 se o ufw estava em execução ou não. Alguma sugestão para obter o ufw programaticamente através do código de saída do comando usado para checar o status do ufw?

    
por pkaramol 07.10.2014 / 18:01

2 respostas

6

Como o código de saída retornado por sudo ufw status é sempre 0, você precisa apenas de grep para o valor de status:

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

Para funcionar corretamente, você precisa usar a opção -w , 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

    
por Sylvain Pineau 07.10.2014 / 20:40
1

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
    
por Jan 07.10.2014 / 18:03