最近、/etc/hosts ファイルを更新して再フォーマットしました。すべてのシステム (約 1000) を実行して、known_hosts ファイルを更新したいと考えています。期待スクリプトを使用して、RSA 指紋の質問に「はい」を送信することを検討しています。十分に単純です。ただし、これらのシステムのいくつかは私にとってまったく新しいものであり、パスワードが設定されていないことはわかっています。これにより、次の 2 つの可能性が生じます。
「はい」が RSA 指紋の質問に送信され、サーバーにログインしました。次のホストに移動する前に、終了を送信して接続を閉じる必要があります。または...
「はい」が RSA フィンガープリントの質問に送信され、現在のパスワードから始めて新しいパスワードを 2 回入力してパスワードを更新するプロンプトが表示されます。パスワードが更新されて次のホストに移動すると、接続は自動的に閉じられます。
私は期待する「if/else」の概念を基本的に理解していると思いますが、それらをネストする方法、より良い方法がある場合、またはそもそも完全にオフベースである場合、完全には理解していません。 .
これは私が今持っているものです:
set file1 [open [lindex $argv 0] r]
set pw1 [exec cat /home/user/.pw1.txt]
set pw2 [exec cat /home/user/.pw2.txt]
while {[gets $file1 host] != -1} {
puts $host
spawn -noecho "ssh $host"
expect {
"continue connecting"{
send "yes\r"
expect {
"current" {
send $pw2\r
} "New password" {
send $pw1\r
} "Retype new password" {
send $pw1\r
}
}
expect "msnyder"
send "exit\r"
}
interact
}
file1 変数は、スクリプトを実行するホストのリストです。
22行目でエラーが発生しているため、正確ではないことはわかっています。しかし、何を修正する必要があるのか わかりません。