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 :

Retour à la ligne dans un terminal


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Inscrit en
    Mars 2011
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 6
    Par défaut Retour à la ligne dans un terminal
    Bonjour,

    Je suis en train de mettre en place un proxy appelé Squid, sous Ubuntu 10.10.
    J'ai besoin de créer un fichier pour entrer tous les utilisateurs afin de les authentifier quand ils se connecteront à internet.

    La commande il y a 2 semaines pour entrer un utilisateur est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    htpasswd -b /etc/squid3/users [nomutilisateur] [password]
    Où -b sert à rentrer le nom et le mot de passe sur la même ligne.

    Seulement, une mise à jour Apache est arrivée le 7 mars, et maintenant, quand on fait un "man htpasswd", un seul argument est valable, "-c" pour créer le fichier users, mais c'est tout. On ne peut pas entrer le mot de passe sur la même ligne.

    Le problème est que j'ai crée un script pour entrer mes 1200 utilisateurs en python. Quand la commande acceptait tous les paramètres sur la même ligne c'était facile.
    Ici, il faut ordonner dans le script :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    htpasswd -c /etc/squid3/users [nomutilisateur]
    Puis revenir à la ligne afin d'entrer le mot de passe, j'aimerais simuler un appui sur la touche Entrée pour aller à ligne suivante, entrer le mot de passe, entrée encore, validation du mot de passe.

    Je vous donne le script que j'ai crée, je sais pas trop quoi faire parce que cette décomposition des actions est difficile à simuler. j'ai essayé "\n" pour retour chariot, mais sans résultat, et je connais pas trop la syntaxe :/


    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
    from os import chdir 
     
    import os
     
    chdir("/home/administrateur/Bureau") #mettre ici le repertoire ou se situe le fichier contenant les users et mdp
     
    fichierSource = open('listecourte','r') #modifer le nom du fichier
     
    ligne = fichierSource.readline()
     
    while ligne != "" :
     
    	liste = ligne.split(";")
     
    	os.system("htpasswd /etc/squid3/users"+" "+liste[0])+"\n"
    	liste[0]+"\n"
     
    	ligne = fichierSource.readline()
    Vous auriez une idée ?

    Merci d'avance.

  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,

    J'ai été confronté à la même question en utilisant dh_make (que tu dois connaître sous Ubuntu).

    dh_make attend aussi un 'Enter' pour lancer la tâche, comment faire pour simuler ça ?

    C'est tout à fait par hasard que j'ai découvert que cela marchait en ajoutant un 'print' après la commande.

    Particularité: j'utilisais subprocess.Popen plutôt que os.system.

    Sait-on jamais ?

  3. #3
    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
    Ca me travaillait, ceci fonctionne parfaitement:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    # -*- coding: utf-8 -*-
     
    import os
     
    os.system("gksudo gedit truc.py")
    print "sesame\n"

  4. #4
    Membre du Club
    Inscrit en
    Mars 2011
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 6
    Par défaut
    Merci de vais essayer ça.

    j'ai du nouveau

    Quand je tape juste htpasswd dans le terminal, il me met :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Usage: htpasswd [-c] passwordfile username
    The -c flag creates a new file.
    A côté, j'ai la même installe ubuntu, mais quand je tape "htpasswd", il me met tous les arguments dont j'aurais besoin (à savoir -b pour mettre le mot de passe sur la même ligne) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    	htpasswd [-cmdpsD] passwordfile username
    	htpasswd -b[cmdpsD] passwordfile username password
     
    	htpasswd -n[mdps] username
    	htpasswd -nb[mdps] username password
     -c  Create a new file.
     -n  Don't update file; display results on stdout.
     -m  Force MD5 encryption of the password.
     -d  Force CRYPT encryption of the password (default).
     -p  Do not encrypt the password (plaintext).
     -s  Force SHA encryption of the password.
     -b  Use the password from the command line rather than prompting for it.
     -D  Delete the specified user.
    On dirait cette commande est corrompue sur mon ubuntu passerelle , mais quand je remet à jour l'OS et apache2, apache2-utils, etc.. ça change rien...

  5. #5
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Bonjour,

    Citation Envoyé par VinsS Voir le message
    Ca me travaillait, ceci fonctionne parfaitement:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    # -*- coding: utf-8 -*-
     
    import os
     
    os.system("gksudo gedit truc.py")
    print "sesame\n"
    Ça c'est étonnant...

    Regardez plutôt du coté de pexpect

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    import pexpect
     
    procss = pexpect.spawn('sudo gedit pass.py')
    procss.expect(['password for', pexpect.EOF])
    procss.sendline('monpass') # Voir getpass
    procss.expect(pexpect.EOF)
    procss.close()
    @+

  6. #6
    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
    Citation Envoyé par PauseKawa Voir le message
    Bonjour,

    Ça c'est étonnant...

    @+
    Pourquoi ?

    Ca ne devrait pas ? pourtant ça marche et avec subprocess aussi.

  7. #7
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Oui, cela ne dois pas fonctionner. Sauf si vous avez fait un sudo/gksudo dans le même terminal juste avant.
    Et pour ce qui est du print cela m'étonnerais que cela s'inscrive autre part que sur le stdout, surtout pas dans la fenêtre de connexion gksudo..

Discussions similaires

  1. [Swing]Retour à la ligne dans un JTextArea
    Par Nasky dans le forum AWT/Swing
    Réponses: 7
    Dernier message: 09/03/2006, 20h02
  2. [C#] Retour à la ligne dans un textbox
    Par Oberown dans le forum Windows Forms
    Réponses: 8
    Dernier message: 26/07/2005, 09h46
  3. [C#] Retour à la ligne dans un TextBox MultLine
    Par Oberown dans le forum ASP.NET
    Réponses: 3
    Dernier message: 06/07/2005, 11h39
  4. retoure à la ligne dans un fichier
    Par adilou1981 dans le forum Langage
    Réponses: 4
    Dernier message: 02/12/2004, 15h05
  5. [MFC] Retour à la ligne dans un CEdit
    Par Kant dans le forum MFC
    Réponses: 7
    Dernier message: 18/02/2004, 08h58

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