使用expect到ssh 1主機,應用一些命令,退出設備並ssh另一個設備以應用一些其他命令

使用expect到ssh 1主機,應用一些命令,退出設備並ssh另一個設備以應用一些其他命令

您好,我正在嘗試使用 Expect 來排除兩個裝置之間的網路故障。總之,我想要實現的是使用 Expect 運行一個腳本,該腳本輸入 2 個裝置並應用命令。

  1. 此腳本要求使用者輸入 2 個主機名
  2. 設定變數使用者、密碼和提示
  3. 生成進程以 ssh 進入第一個設備
  4. 顯示用於故障排除的命令

以上所有工作正常....當嘗試 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";

相關內容