您好,我正在嘗試使用 Expect 來排除兩個裝置之間的網路故障。總之,我想要實現的是使用 Expect 運行一個腳本,該腳本輸入 2 個裝置並應用命令。
- 此腳本要求使用者輸入 2 個主機名
- 設定變數使用者、密碼和提示
- 生成進程以 ssh 進入第一個設備
- 顯示用於故障排除的命令
以上所有工作正常....當嘗試 ssh 另一個主機名稱時出現問題,基本上我的腳本在 10 秒後超時,並且從不 ssh 另一個設備。
預先感謝這個社區的出色工作和幫助
這是程式碼
#!/usr/local/bin/expect -f
exec tput clear >@ stdout
set timeout 10
puts "Enter hostname to connect"
set c [gets stdin]
puts "which is the destination hostname?"
set dhostname [gets stdin]
#setting password variable, reading it from file
set pa [open "pass.txt" r]
set pass [read $pa]
close $pa
#setting user variable
set user xxxx
#setting prompt variable
set prompt "(%|#|\\$|>|~|:) $"
spawn -noecho ssh $user@$c;
expect {
"Are you sure you want to continue connecting (yes/no)" {send {yes};
send "\r"
exp_continue}
"assword:" {
send "$pass\r"
expect -re $prompt
}
}
##commands to execute on the device
send "show system uptime\r";
expect "$prompt"
send "exit\r";
expect -re $prompt
send "ssh $user@$dhostname";