web-dev-qa-db-fra.com

Comment vérifier si ufw s'exécute par programme

Dans la plupart des services (par exemple, privoxy), il existe un moyen propre d’obtenir l’état du service: ps -C [servicename] puis en vérifiant le code de sortie ($?): 0: le service était en cours d’exécution 1: ne fonctionnait pas Ce n’est pas le cas in ufw (non reconnu en tant que service?) Le Sudo service ufw status se ferme toujours à 0, que ufw soit en cours d'exécution ou non. Des suggestions pour obtenir ufw par programme via le code de sortie de la commande utilisée pour vérifier le statut ufw?

5
pkaramol

Comme le code de sortie renvoyé par Sudo ufw status est toujours égal à 0, il vous suffit d'indiquer grep pour la valeur de statut:

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

Pour fonctionner correctement, vous devez utiliser l'option -w, à partir 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 n'est que le mode silencieux, rien n'est écrit en sortie standard

8
Sylvain Pineau

Pour vérifier le statut d'utilisation d'UFW

Sudo ufw status verbose

La sortie est similaire à

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