IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Gestion des erreurs python sur Ansible


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Stagiaire
    Inscrit en
    Juillet 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Stagiaire
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2018
    Messages : 4
    Par défaut Gestion des erreurs python sur Ansible
    Salut,

    Voila mon probleme j'ai 3 machines, une ansible et deux de test.
    L'objectif et de deploiyer un fichier de configuration sur les deux machines test en passant par ansible.
    j'ai reussi a le faire tout marche impec, mais j'aimerais gerer les erreurs du fichier python et les afficher lors de la fin du playbook sur la machine ansible.

    Les seuls erreurs que j'aimerais gerer pour le moment c'est les erreurs par rapport au changement d'adresse ip sur le fichier de configuration.

    Actuellement je modifie le fichier python en dur pour l'appliquer sur les autres machines.

    Je lance le python pour verifier que mon adresse que je rentre et bonne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    #coding : utf-8
     
    def parse_ip(ip):
            ip = ip.split("//")[1].split(":")[0]
            nb_sep = 0
            tmp = ""
            tmp_int = 0
            for c in ip:
                    if c == '.':
                            nb_sep+=1
                            try:
                                    tmp_int = int(tmp)
                            except:
                                    return "format ip inccorect"
                            if 0>tmp_int or tmp_int > 255:
                                    return "format ip incorrect"
                            tmp=""
                    else:
                            tmp+=c
     
            try:
                    tmp_int = int(tmp)
            except:
                    exit("format ip inccorect")
            if 0>tmp_int or tmp_int > 255:
                    exit("format ip incorrect")
     
            if nb_sep != 3:
                    return ("format ip incorrect")
     
            return "format ip ok!"
    Voila le resultat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    [root@ansible pythontest]# python3 -i parser.py
    >>> ip = "ldaps://255.255.255.255:5000"
    >>> parse_ip(ip)
    'format ip ok!'
    >>> ip = "ldaps://255.255.255.256:5000"
    >>> parse_ip(ip)
    format ip incorrect
    On ma parlé de le faire en parametre, si j'ai bien compris... mais je ne sais pas comment faire



    PS : Petit question bête > Peut on coder en python sur un playbook ??

  2. #2
    Membre habitué
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2018
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Juillet 2018
    Messages : 16
    Par défaut
    Salut,

    Les arguments passés à l'application se récupèrent avec sys.argv

    doc python de la lib sys:
    https://docs.python.org/fr/2.7/library/sys.html

    sys.argv

    La liste des arguments de la ligne de commande passés à un script Python. argv[0] est le nom du script (chemin complet, ou non, en fonction du système d’exploitation). Si la commande a été éxécutée avec l’option -c de l’interpréteur, argv[0] vaut la chaîne '-c'. Si aucun nom de script n’a été donné à l’interpréteur Python, argv[0] sera une chaîne vide.

    Pour boucler sur l’entrée standard, ou la liste des fichiers donnés sur la ligne de commande, utilisez le module fileinput.
    En gros modifie ton script pour taper

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monscript.py "ldaps://255.255.255.255:5000"
    sys.argv[0] contiendra "monscript.py"
    sys.argv[1] contiendra ldaps://255.255.255.255:5000

  3. #3
    Membre habitué
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2018
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Juillet 2018
    Messages : 16
    Par défaut
    PS : Petit question bête > Peut on coder en python sur un playbook ??
    qu'appelle tu un playbook ?

  4. #4
    Membre à l'essai
    Homme Profil pro
    Stagiaire
    Inscrit en
    Juillet 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Stagiaire
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2018
    Messages : 4
    Par défaut
    Citation Envoyé par BobbyBro Voir le message
    qu'appelle tu un playbook ?
    Un playbook c'est une sorte de livre de taches. C'est un fichier ecrit en YAML sur ansible qui permet de faire de la gestion de configuration.
    Quand je lance mon playbook il lance (pour ma part) un script python sur les machine tests (la j'en ai que 2 donc c'est pas dur mais admettons 600).

    Mais j'aimerais que quand je lance mon playbook il puisse m'afficher les erreur de mon python qui au bout du compte j'ai aussi lancé ^^.

    Je vais tester avec les arguments apres je suis vraiment pas du tout expert j'ai eu l'aide d'un ami pour le python.

  5. #5
    Membre habitué
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2018
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Juillet 2018
    Messages : 16
    Par défaut
    Le plus simple est de générer des logs.
    C'est bien fait et évite de réinventer la roue.

    http://sametmax.com/ecrire-des-logs-en-python/

    il lance (pour ma part) un script python sur les machine tests (la j'en ai que 2 donc c'est pas dur mais admettons 600).
    si 600 machines il lance 600 fois le script ( 1 fois par serveur ) ou le script ce lance q'une fois sur le serveur Ansible ?

    La réponse à cette question te permet de voir ou stocker tes logs.
    Il y a librairie smtp et tu peux t envoyer les logs par email en direct.

Discussions similaires

  1. Problème sur la gestion des erreurs
    Par ronio dans le forum Langage
    Réponses: 4
    Dernier message: 08/11/2006, 09h47
  2. Gestion des erreurs sur une commande multiple
    Par domiq44 dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 05/10/2006, 15h03
  3. Réponses: 4
    Dernier message: 13/09/2006, 16h53
  4. [PHP-JS] gestion des erreurs sur liste déroulente
    Par HwRZxLc4 dans le forum Langage
    Réponses: 9
    Dernier message: 28/05/2006, 03h21
  5. [VBA-E] Pb sur gestion des erreurs
    Par micoscas dans le forum Macros et VBA Excel
    Réponses: 19
    Dernier message: 08/03/2005, 17h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo