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 :

Petit souci script telnet


Sujet :

Réseau/Web Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 40
    Par défaut Petit souci script telnet
    Bonjour,

    J'avais créé un script bash qui me permet de me connecter à un appareil, et le formater:
    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
    #!/usr/bin/expect -f
     
    set Username tel
    set Password tel
     
    spawn telnet 192.168.0.2
     
    expect "Username: "
    send -- "$Username\r"
     
    expect "Password: "
    send -- "$Password\r"
     
    send -- "\r"
    send -- "format a:\r"
     
    expect "Sure (Y/N) ? "
    send -- "Y\r"
     
    expect eof
    Il marche très bien, mais j'ai ensuite créé un script python pour copier des fichiers en FTP sur le matériel formaté... Pas de problème jusque là ...
    Je souhaiterais , dans un but de continuité, reprendre mon script telnet et le passer en python, j'ai donc pour ceci commencer un script mais celui-ci ne produit rien à l'écran et m'affiche une erreur...

    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
    #!/usr/bin/python
    # -*- coding: utf-8 -*-
    import telnetlib
    import sys
     
    HOST = "192.168.0.2"
    USER = "tel"
    PASSWORD = "tel"
     
    telnet = telnetlib.Telnet(HOST)
     
    telnet.read_until("Username: ")
    telnet.write(USER + "\n")
     
    telnet.read_until("Password: ")
    telnet.write(PASSWORD + "\n")
     
    telnet.write("\n")
     
    telnet.write("format a:\n")
     
    telnet.read_until("Sure (Y/N) ?")
    telnet.write("y")
     
    telnet.close()
    Et quand je l'interromps car rien ne se passe, il m'affiche:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Traceback (most recent call):
      File "Format_PU.py", line 12, in <module>
         telnet.read_until("Username: ")
      File "/usr/lib/python3.5/telnetlib.py", line 302, in read_until
         i = self.cookedq.find(match)
    TypeError: a bytes-like object is required, not 'str'
    Je comprends qu'il ne veut pas de ma chaine de caractères ... Mais que dois-je utiliser pour faire potentiellement comme sur mon script en bash ?

    En vous remerciant de votre aide,

  2. #2
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Salut,

    Tu dois changer tes chaînes unicode en bytes.

    Ici, dans la doc, il y a un exemple:
    https://docs.python.org/3/library/te...telnet-example

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 40
    Par défaut
    Salut,

    Merci pour ton aide.

    J'ai déjà fait comme l'exemple, ajouter les "b" avant et le ".encode('ascii') + b" dans le telnet.write mais j'ai quand meme un souci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Traceback (most recent call):
     File "Format_PU.py", line 15, in <module>
         telnet.read_until(b"Password: ")
      File "/usr/lib/python3.5/telnetlib.py", line 313, in read_until
         if selector.select(timeout):
      File "usr/lib/python3.5/selectors.py", line 376, in select
         fd_event_list = self.poll.poll (timeout)
    Et là, je ne sais pas trop ce que je peux faire...

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

    Citation Envoyé par molochlebanni Voir le message
    Je comprends qu'il ne veut pas de ma chaine de caractères ... Mais que dois-je utiliser pour faire potentiellement comme sur mon script en bash ?
    Votre script fonctionnerait bien mieux sous Python2 comme indiqué dans le shebang #!/usr/bin/python.
    Or vous le lancez sous Python3 où "str" est devenu Unicode, par défaut, si on veut des "octets", il faut le demander!

    Vous avez à la fin de la documentation de telnetlib de Python3, un petit exemple qui fait a peu près la même chose que votre code en utilisant les constructions qui vont bien pour exprimer bytes sous forme littérale et qui montre l'usage d'encode/decode pour convertir des "str" en "bytes".

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

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 40
    Par défaut
    Bonjour wiztricks,

    Merci pour l’éclaircissement, je n'avais pas fait attention.

    Du coup dans le shebang je rajoute python3, c'est cela ?

    Par contre l'exemple me montre comment décoder, mais quand j'exécute le code, il ne se passe rien ...

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 754
    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 754
    Par défaut
    Citation Envoyé par molochlebanni Voir le message
    Merci pour l’éclaircissement, je n'avais pas fait attention.

    Du coup dans le shebang je rajoute python3, c'est cela ?
    Ce serait cohérent...

    Citation Envoyé par molochlebanni Voir le message
    Par contre l'exemple me montre comment décoder, mais quand j'exécute le code, il ne se passe rien ...
    Comme vous n'avez pas précisé de timeout, les wait_until vont attendre indéfiniment d'avoir reçu la chaîne de caractères passée en paramètres. Si elle est un peu différente, çà va attendre pour rien: le host ne va pas expédier plusieurs fois "password", il se contente d'attendre la réponse.

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

  7. #7
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 40
    Par défaut
    Ok, bon j'ajoute un timeout sur mes read_until, mais le script se lance et se referme ... sans erreur et sans avoir rien fait ...

    J'ai du mal avec ce script ...

  8. #8
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 754
    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 754
    Par défaut
    Citation Envoyé par molochlebanni Voir le message
    J'ai du mal avec ce script ...
    Postez le script: ce n'est certainement plus le même que celui que vous aviez posté initialement.

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

Discussions similaires

  1. Petit souci dans un petit script Shell
    Par Khlomn dans le forum Shell et commandes GNU
    Réponses: 7
    Dernier message: 30/11/2011, 22h07
  2. Petit soucis de script VBS
    Par TheSpeedWave dans le forum VBScript
    Réponses: 6
    Dernier message: 25/10/2009, 12h26
  3. un petit souci dans mon script !
    Par kerberos dans le forum VBScript
    Réponses: 1
    Dernier message: 25/06/2008, 15h42
  4. Petit soucie avec script de récup d'info
    Par kimous dans le forum Web
    Réponses: 4
    Dernier message: 11/03/2008, 14h11
  5. Petit souci avec un script
    Par Equinoxe5 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 30/09/2006, 15h43

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