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 :

Ping d'un poste distant


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2017
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Transports

    Informations forums :
    Inscription : Octobre 2017
    Messages : 66
    Par défaut Ping d'un poste distant
    Bonjour,

    Je commence en Python et j'essaie de faire un programme permettant de pinger un poste ou une imprimante sur le réseau. Le code fonctionne sous Mac avec python 3.6.1 et renvoie bien ok pour le ping

    Par contre avec python 3.6.4 sous Windows 7 32bits ou Windows 10 64bits, le programme renvoie toujours no response, alors qu'avec le terminal cmd le poste ou le site par exemple www.google.com répond bien. Je ne comprends pas pourquoi et à priori il n'y à pas de bug dans le script.

    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
    from platform import system as system_name # Returns the system/OS name
    import subprocess      # Execute a shell command
    import os 
     
    def ping(host):
        """
        Returns True if host (str) responds to a ping request.
        Remember that some hosts may not respond to a ping request even if the host name is valid.
        """
     
        # Ping parameters as function of OS
        parameters = "-n 1" if system_name().lower()=="windows" else "-c 1"
     
        # Pinging
        pingResult = subprocess.call(["ping", parameters, host], stdout=open(os.devnull, 'wb'), stderr=open(os.devnull, 'wb'))
     
        if pingResult == 0:
          print("Address {} OK".format(host))
        else:
          print("Address {} no response".format(host))
     
    def main():
        imprimante = input("Nom de l'imprimante : ")
        machine = input ("Ordinateur : ")
        ping(machine)
     
     
    main()

    Merci d'avance pour vos lumières.

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 743
    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 743
    Par défaut
    Salut,

    Hélas, il y a un bug dans votre script concernant le format de "parameters".
    Pour le voir, lancez l'interpréteur interactif et regardez ce que remonte la commande call(...) passée à la main.

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

  3. #3
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2017
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Transports

    Informations forums :
    Inscription : Octobre 2017
    Messages : 66
    Par défaut
    Bonsoir,

    Qu'entendez vous par passer la commande call à la main? Dans l'IDLE je ne sais pas faire. J'ai lu la documentation sur la fonction call mais je ne vois pas l'erreur... j'ai essayer de modifier un peu le code sans résultat, besoin d'un peu plus d'indices ^^

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    # Ping parameters as function of OS
        #parameters = "-n 1" if system_name().lower()=="windows" else "-c 1"
        if system_name().lower=="windows":
          parameters="-n 1"
        else:
          parameters="-c 1"
     
        # Pinging
        pingResult = subprocess.call(["ping", parameters, host], stdout=open(os.devnull, 'wb'), stderr=open(os.devnull, 'wb'))

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 743
    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 743
    Par défaut
    Citation Envoyé par riko60 Voir le message
    Qu'entendez vous par passer la commande call à la main? Dans l'IDLE je ne sais pas faire.
    Sur IDLE, vous avez une console, dans laquelle, vous pouvez taper des instructions et regarder ce qu'il s'y passe. Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    >>> call(['ping', '-s 1', 'www.google.com'])
    Bad value for option -s 1, valid range is from 1 to 4.
    1
    >>>
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2017
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Transports

    Informations forums :
    Inscription : Octobre 2017
    Messages : 66
    Par défaut
    voici le retour de l'interpréteur

    Traceback (most recent call last):
    File "<pyshell#12>", line 1, in <module>
    subprocess.call(["ping", parameters, host], stdout=open(os.devnull, 'wb'), stderr=open(os.devnull, 'wb'))
    NameError: name 'parameters' is not defined

    Du coup je penche pour un problème de récupération du format de la variable parameters, j'ai essayé un str(parameters) sans succès, peut être un format quelque chose??
    ou un return parameters?

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 743
    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 743
    Par défaut
    Citation Envoyé par riko60 Voir le message
    voici le retour de l'interpréteur

    Traceback (most recent call last):
    File "<pyshell#12>", line 1, in <module>
    subprocess.call(["ping", parameters, host], stdout=open(os.devnull, 'wb'), stderr=open(os.devnull, 'wb'))
    NameError: name 'parameters' is not defined
    Ça dit seulement que vous avez oublié de définir la variable "parameters" avant...
    Quand prendrez vous le temps d'ouvrir un tuto?

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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. ping sur post distant
    Par le_misterioso dans le forum Dépannage et Assistance
    Réponses: 6
    Dernier message: 16/10/2010, 14h17
  2. Connexion XP à un poste distant
    Par Filippo dans le forum Windows XP
    Réponses: 2
    Dernier message: 22/07/2005, 14h14
  3. [Servlet] Créer un fichier sur un poste distant
    Par JohnBlatt dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 07/05/2005, 18h51
  4. [WMI] accès à un poste distant
    Par bartmarley dans le forum Windows
    Réponses: 12
    Dernier message: 18/04/2005, 20h21
  5. Connecter Delphi 7 et une bd mysql sur un poste distant
    Par nordine001 dans le forum Bases de données
    Réponses: 5
    Dernier message: 23/08/2004, 14h40

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