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

Linux Discussion :

Script avec Expect + ssh + passwd


Sujet :

Linux

  1. #1
    Membre à l'essai
    Inscrit en
    Janvier 2008
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 23
    Points : 13
    Points
    13
    Par défaut Script avec Expect + ssh + passwd
    Bonjour,

    En dépit de mes innombrables recherches sur l'écriture d'un script Expect avec SSH et Passwd, je n'ai toujours pas trouvé de solution à mon soucis.
    Je souhaiterais faire une simple connexion ssh et ensuite modifer le mot de passe d'un user

    Voici mon code:

    #!/usr/bin/expect -f

    set username [lindex $argv 0]
    set servername [lindex $argv 1]
    set password [lindex $argv 2]
    set usertomodify bill
    set NewPassword [lindex $argv 4]
    set timeout -1
    spawn ssh -l [lindex $argv 0] [lindex $argv 1] [lindex $argv 2]
    expect "Password:"
    send -- "$password\r"
    send -- "/usr/bin/passwd $usertomodify\r"
    expect "New Password:"
    send -- "$NewPassword\r"
    expect "Re-enter new Password:"
    send "$NewPassword\r"
    expect "successfully"
    send "exit\r"
    expect eof


    ./sshpasswd root adatst-1.cie.etat.Lu password
    spawn ssh -l root adatst-1.cie.etat.Lu password
    Password:
    ksh:password: not found
    send: spawn id exp6 not open
    while executing
    "send -- "$NewPassword\r""
    (file "./sshpasswd" line 14)

    Merci d'avance pour votre aide

  2. #2
    Membre à l'essai
    Inscrit en
    Janvier 2008
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 23
    Points : 13
    Points
    13
    Par défaut
    Bon ben tant pis, personne ne connait ... ou pas envie d'aider ...

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 221
    Points : 207
    Points
    207
    Par défaut
    Salut,

    dans ta ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    spawn ssh -l [lindex $argv 0] [lindex $argv 1] [lindex $argv 2]
    Enlève le
    qu'il y a à la fin....

  4. #4
    Membre à l'essai
    Inscrit en
    Janvier 2008
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 23
    Points : 13
    Points
    13
    Par défaut
    Salut,

    Merci pour avoir répondu.

    Je n'ai plus l'erreur. le user se connecte au serveur mais là par contre, la commande passwd n'est pas exécutée.

    #!/usr/bin/expect -f

    set username [lindex $argv 0]
    set servername [lindex $argv 1]
    set password [lindex $argv 2]
    set usertomodify Bill
    set NewPassword [lindex $argv 3]
    set timeout -1
    spawn ssh -l [lindex $argv 0] [lindex $argv 1]
    expect "Password:"
    send -- "$password\r"
    send -- "passwd $usertomodify\r"
    expect "New Password:"
    send -- "$NewPassword\r"
    expect "Re-enter new Password:"
    send "$NewPassword\r"
    expect "successfully"
    send "exit\r"
    expect eof

    ./newtest User adaappl2.cie.etat.Lu Pass NewPass

    Merci,

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 221
    Points : 207
    Points
    207
    Par défaut
    Oui, avec ton script c'est normal.
    Ton script envoie la commande "passwd" juste après avoir envoyé le mot de pass de la connexion ssh

    Du coup la commande est envoyé avant d'être réellement loggué sur ta machine distante.

    il faut ajouter après avoir donné ton password, une commande except attendant le prompt du shell

  6. #6
    Membre à l'essai
    Inscrit en
    Janvier 2008
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 23
    Points : 13
    Points
    13
    Par défaut
    En tout cas un grand merci pour ton aide.

    Ca marche nickel !

    #!/usr/bin/expect -f

    #set username [lindex $argv 0]
    #set servername [lindex $argv 1]
    set password [lindex $argv 2]
    set usertomodify billou
    set NewPassword [lindex $argv 3]
    set timeout -1
    spawn ssh -l [lindex $argv 0] [lindex $argv 1]
    expect "Password:"
    send -- "$password\r"
    expect "#"
    send -- "passwd $usertomodify\r"
    expect "New Password:"
    send -- "$NewPassword\r"
    expect "Re-enter new Password:"
    send "$NewPassword\r"
    expect "successfully"
    send "exit\r"
    expect eof

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

Discussions similaires

  1. Lancer un script avec commandes en pipeline en arrière plan par SSH
    Par Marty69 dans le forum Shell et commandes GNU
    Réponses: 9
    Dernier message: 23/09/2014, 17h30
  2. Connexion à un serveur mysql via un script bash zenity avec expect
    Par xunil2003 dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 24/02/2014, 08h31
  3. SSH script avec username et mot de passe
    Par faamugol dans le forum Sécurité
    Réponses: 13
    Dernier message: 08/05/2009, 16h54
  4. Réponses: 4
    Dernier message: 02/11/2004, 16h18
  5. Script avec JOINTURE et CASE
    Par Labienus dans le forum Langage SQL
    Réponses: 6
    Dernier message: 27/02/2004, 10h40

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