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
}
}