Comment effectuer un check 'strict' ligne par ligne en python


#1

Actuellement j’ai un script long comme ma … :rofl:

Qui me sert à effectuer la découverte des containers et me remonter un tas d’information utiles pour le monitoring.

Je but sur un truc tout con à mon avis :confused:

# prod / preprod container state
def prod(args):
    with open("/etc/zabbix/scripts/prod_container-list.txt", "r") as file:
        for line in file:
            line = line.rstrip() # remove '\n' at end of line
            if args.container == line:
                print("0")
            else:
                print("1")

En effet il arrive que lors d’essai des containers soit lancé et supprimé à la volée, il est donc inutile de remontée des alertes. de monitoring pour ceci, je pensé utilisé une liste de nom de container afin de ne placé des triggers que sur les containers en production.

Hors je me retrouve avec non pas un trigger à 1 ou à 0 mais des triggers qui lors d’un changement d’états accumule les 1 et les 0.


#2

salut
je comprends pas trop ; le programme que tu monitores est zappix?
En tout cas il manque peut être / devant etc
et le rstrip enlève les espaces, pas les \n


#3

Effectivement bien vu durant mes différents essai j’ai fais une coquille sur le path de la liste.

non le script permet à Zabbix via agent et un outils d’effectuer un send vers un proxy lui même connecté au serveur principal.

Pour les espaces je me suis mal exprimé effectivement je vire les espaces potentiel en fin de ligne.

Dans les grandes lignes je cherche à effectuer un check strict sur le nom du container dans un fichier afin de m’assurer que oui ou non les alertes sont à transmettre.

J’avais auparavant des faux positifs si jamais le nom d’un container était contenu dans un autre nom :confused:


#4

donne nous le contenu de prod_container-list.txt et la valeur de args.container :wink:


#5

Bon j’ai palier à mon souci autrement, grosso modo == me renvoie 1 si il trouve le nom du container contenu dans args.container dans la liste au format txt.

J’avais pas véritablement besoin d’avoir un état 1 ou 0 finalement, du coup j’ai vié les print().