1 votes

Comment puis-je simplifier ce script expect?

J'ai fait un petit script pour changer le mot de passe de plusieurs serveurs. Sa syntaxe est expect - une extension de tcl. Ça semble si mauvais mais peut bien fonctionner.

Un problème survient lorsque je me connecte à un serveur pour la première fois, je dois entrer 'yes' pour confirmer l'ajout de ce serveur à ~/.ssh/know_hosts. Cela me rend ennuyeux depuis longtemps. Y a-t-il un moyen simple de résoudre cela?

Merci et désolé pour mon terrible anglais.

proc passwd4mqm {ip_list} {
    foreach Arg $ip_list {
    set  city [lindex $Arg 0]
    set  ip [lindex $Arg 1]
    set  user [lindex $Arg 2]
    set  passwd [lindex $Arg 3]
    send_user  "\n\n>>> $city-$ip \n"
    spawn ssh $user@$ip
    expect {
        "yes" {
        send "yes\r"
        expect {
            "password" { 
            send "$passwd\r"
            expect {
                "$user" {
                send "passwd mqm\r"
                expect {
                    "New UNIX password:" {
                    send "$passwd\r"
                    expect {
                        "Retype new UNIX password:" {
                        send "$passwd\r"}
                    }
                    }
                }
                send "exit\r"
                }
            }
            }
        }
        }
        "password" { 
        send "$passwd\r"
        expect {
                    "$user" {
            send "passwd mqm\r"
            expect {
                "New UNIX password:" {
                send "$passwd\r"
                expect {
                    "Retype new UNIX password:" {
                    send "$passwd\r"}
                }
                }
            }
            send "exit\r"
                    }
        }
        }
    }
    interact
    }
}

0voto

Scott Morrison Points 193

Peut-être que vous cherchez quelque chose comme exp_continue

expect {
  "*yes/no*" { send "yes\r"; exp_continue }
  "password:" { 
    ..... 
  }
}

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X