Я сделал небольшой скрипт для изменения пароля многих серверов. Его синтаксис ожидаемый - расширение tcl. Это кажется таким плохим, но может работать нормально.
Одна из проблем заключается в том, что при первом входе на сервер мне нужно ввести «да», чтобы подтвердить добавление этого сервера в ~ / .ssh / know_hosts. Мне это надоедает давно. Есть ли простой способ решить эту проблему?
Спасибо и извините за мой ужасный английский.
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
}
}
Возможно вы ищете что-то вроде exp_continue
expect {
"*yes/no*" { send "yes\r"; exp_continue }
"password:" {
.....
}
}