Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème de liste (Python ou Shell ?)

Sujet résolu
    10 février 2016 à 17:12:44

    Bonjour à tous :)

    Je suis face à un dilemme depuis le début de l'après midi et je ne m'en sors pas. Si vous avez une idée je suis preneur. Voici mon ce que j'essaye de faire et mon soucis.

    Je suis sur ma machine de supervision et j'accède à un fichier sur un serveur que je supervise. Jusqu'ici tout va bien. :)

    Ce fichier contient une liste qui représente un ensemble de service dont je veux récupérer le résultat de la commande status.

    Voici la définition de mon hôte distant :

    opts, args = parser.parse_args()
    if args:
        parser.error("No arguments.")
    port = opts.port
    hostname = opts.hostname or ''
    
    ssh_key_file = opts.ssh_key_file or os.path.expanduser('~/.ssh/id_rsa')
    user = opts.user or 'service'
    passphrase = opts.passphrase or ''
    
    s_warning = opts.warning or DEFAULT_WARNING
    s_critical = opts.critical or DEFAULT_CRITICAL
    warning, critical = schecks.get_warn_crit(s_warning, s_critical)
    
    host = [hostname, user, port, ssh_key_file, passphrase]

    Ensuite voici comment je récupère puis traite mon fichier qui liste mes services :

    listServ = commands.getoutput('ssh '+host[1]+'@'+host[0]+' cat /admin/SP/data/serviceListe | cut -d "/" -f 9')
    print list
    for item in listServ:
        print item

    Et c'est là mon problème ... Au lieu d'avoir ... :

    service1
    service2
    service3
    service4

    Comme je l'espérais, la boucle for m'a retourné :

    s
    e
    r
    v
    i
    c
    e
    1
    
    s
    e
    r
    v
    i
    c
    e
    2
    
    s
    e
    r
    v
    i
    c
    e
    3
    
    s
    e
    r
    v
    i
    c
    e
    4

    Pour le coup je ne sais pas si mon problème viens de mon code python ou shell ...

    Si quelqu'un a une idée, elle est la bienvenue, de mon côté je continue de chercher.

    Tiury :)

    • Partager sur Facebook
    • Partager sur Twitter
      10 février 2016 à 17:29:35

      Ton problème est tout simple ^^ La commande 'commands.getoutput' return un string et non un liste. Il faut donc que tu utilises la fonction split() pour la transformer en liste.

      for item in listServ.split():
          print item



      • Partager sur Facebook
      • Partager sur Twitter
        11 février 2016 à 10:57:45

        C'était donc ça, merci beaucoup ! :D

        • Partager sur Facebook
        • Partager sur Twitter

        Problème de liste (Python ou Shell ?)

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown