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

Réseau/Web Python Discussion :

Souci test /sys/class/net


Sujet :

Réseau/Web Python

  1. #1
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2020
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2020
    Messages : 10
    Points : 2
    Points
    2
    Par défaut Souci test /sys/class/net
    Bonjour, j'ai besoin de tester deux paramètres dans /sys/class/net/. Le but de ce script est pour le moment de vérifier que les interfaces sont des interfaces réseau (pas de loopback ou de bond) et qu'elles sont PHYSICAL UP.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    #!/usr/bin/env python3
     
    import  os
     
    path = '/sys/class/net/'
    interface = os.listdir(path)
     
    for f in interface:
            index = os.path.join(path, interface, 'ifindex')
            carrier = os.path.join(path, interface, 'carrier')
     
            if index == '6' and carrier == '1':
                    print('Bonjour')
    Le souci étant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Traceback (most recent call last):
      File "/root/test/./test.py", line 10, in <module>
        index = os.path.join(path, interface, 'ifindex')
      File "/usr/lib/python3.9/posixpath.py", line 90, in join
        genericpath._check_arg_types('join', a, *p)
      File "/usr/lib/python3.9/genericpath.py", line 152, in _check_arg_types
        raise TypeError(f'{funcname}() argument must be str, bytes, or '
    TypeError: join() argument must be str, bytes, or os.PathLike object, not 'list'
    Je le comprends et pensais pouvoir le résoudre avec la boucle, sans succès. Avez-vous une idée ?

  2. #2
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2020
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2020
    Messages : 10
    Points : 2
    Points
    2
    Par défaut
    De plus, mon script est incomplet car je ne lis pas la valeur de ifindex ou de carrier, y a-t-il une autre façon qu'avec open() et read() ?

  3. #3
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,
    Citation Envoyé par IdiCoda Voir le message
    Je le comprends et pensais pouvoir le résoudre avec la boucle, sans succès.
    Avant de partir à écrire de "vrais" codes, on fait les exercices proposés dans le tuto qu'on a pris le temps de choisir...
    Et comme on a passé du temps avec le tuto., on se souvient d'exercices similaires et des chapitres où ça parle de boucle qu'on peut aller revoir (si on constate qu'on n'a pas tout compris).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  4. #4
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 104
    Points : 4 454
    Points
    4 454
    Par défaut
    bonjour
    Citation Envoyé par IdiCoda Voir le message
    et pensais pouvoir le résoudre avec la boucle, sans succès.
    Il faut comprendre ce que fait une boucle Pourquoi créer une variable f mais ??? ne jamais utiliser cette variable
    TypeError: join() argument must be str, bytes, or os.PathLike object, not 'list'
    Python te donne bien l'erreur ("TypeError: join() ne prend PAS une liste en paramètre"), c'est malheureux de demander de l'aide pour cela ...


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if index == '6' and carrier == '1':
    Difficile à comprendre ta logique, tu penses que os.path.join() retourne le dernier fichier ?
    $moi= ( !== ) ? : ;

  5. #5
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 674
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 674
    Points : 5 259
    Points
    5 259
    Par défaut
    Sur ta ligne 10, interface est une liste (celle renvoyée par os.listdir).

    A la rigueur, tu peux utiliser f.
    Comme ceci : index = os.path.join(path, f, 'ifindex').


    os.path.join va simplement ajouter un séparateur de répertoire entre les différents éléments que tu passes.
    Tu ne peux pas avoir '6' dedans, tu auras un chemin.

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Citation Envoyé par IdiCoda Voir le message
    De plus, mon script est incomplet car je ne lis pas la valeur de ifindex ou de carrier, y a-t-il une autre façon qu'avec open() et read() ?
    Et non....
    Si vous en êtes à vous mélanger les pinceaux entre nom de fichier et son contenu, vous avez du temps à passer dans les tutos (il y a souvent/toujours un chapitre sur les fichiers...)avant de programmer.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  7. #7
    Expert éminent Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 035
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 035
    Points : 8 400
    Points
    8 400
    Par défaut
    Citation Envoyé par IdiCoda Voir le message
    (...)
    salut,

    un truc comme ça devrait fonctionner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    import os
     
    path = '/sys/class/net/'
    for iface in os.listdir(path):
       index_file = os.path.join(path, iface, 'ifindex')
       carrier_file = os.path.join(path, iface, 'carrier')
       with open(index_file) as ifile, open(carrier_file) as cfile:
          index = int(ifile.read())
          carrier = int(cfile.read())
       if index == 6 and carrier == 1:
          print(f'{iface}: bonjour')
    à tester/adapter.

Discussions similaires

  1. [FLASH MX] Souci avec la classe "stage"
    Par helloKiwi dans le forum Flash
    Réponses: 7
    Dernier message: 26/09/2006, 17h47
  2. Petit souci JSP et class de connexion a BdD
    Par LeXo dans le forum Servlets/JSP
    Réponses: 13
    Dernier message: 07/06/2006, 00h57
  3. NativeFramework : Portage de classes .NET en C++
    Par romeo9423 dans le forum C++
    Réponses: 2
    Dernier message: 18/05/2006, 00h27
  4. Réponses: 7
    Dernier message: 05/10/2004, 13h44

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