我寫了一個腳本,通過ssh登錄並運行一些命令。列表中的一半設備列表中有一個可接受的用戶名和密碼組合。循環訪問多個憑據TCL期望
我想希望能夠解釋失敗的登錄,開始用相同的設備新的登錄嘗試,但在第二次嘗試使用不同的登錄憑證(有兩種可能的用戶名和密碼組合)
如果任何人都可以將我指向正確的方向,我真的很感激它。這是我第一次使用TCL或期望。
我到目前爲止的一個縮寫版本如下。
set username "someusername"
set password "somepassword"
set devices "X.X.X.X"
foreach device $devices {
puts "Processing device: $device";
spawn plink -ssh $devices
expect "Store key in cache"
send "y\r"
expect "login as:"
send "$username\r"
expect "password:"
send "$password\r"
expect "#"
send "conf t\r"
expect "(config)#"
send "some commands\r"
expect "(config)#"
send "end\r"
expect "#"
send "copy run startup-config\r"
expect "#"
你知道嗎'foreach'可以在兩個或多個列表一次迭代? 'foreach device $ devices username $ usernames password $ passwords {...}'。這可以使這種事情更容易... –
我不知道唐納。謝謝!儘管如此,即使這個foreach有不止一個名單,TCL也會在第一次失敗後退出。而且,我連接的思科設備在輸入錯誤密碼後不會再次提示輸入用戶名,所以我認爲除了能夠傳遞多個auth變量集外,腳本還需要能夠啓動一個新的會話使用$ devices中的同一個$設備。我不確定情況如何,只是我的猜測。如果,我不樂意被設置成直線。 – helloworldhello