我所試圖做的是:讀取的文件轉換成String,做一個循環,expect腳本
- 創建
.exp
文件,該文件會從*.txt
文件從同一目錄中讀取並分析所有的內容在文本文件中放入期望腳本中的字符串變量。 - 循環包含一系列主機名的字符串,並在枚舉字符串之前先執行一系列命令。
那麼該腳本,讀了一系列主機名從txt
文件在同一目錄下,然後將它們讀入一個字符串,.exp
文件將自動登錄到每個他們與excecute系列的命令。
我有下面的代碼編寫的,但它不工作:
#!/usr/bin/expect
set timeout 20
set user test
set password test
set fp [open ./*.txt r]
set scp [read -nonewline $fp]
close $fp
spawn ssh [email protected]$host
expect "password"
send "$password\r"
expect "host1"
send "$scp\r"
expect "host1"
send "exit\r"
任何幫助是極大的讚賞....
我有點困惑。你有一個文件列出所有的命令,另一個列出所有的主機?還是你有一個目錄,每個主機有一個文件(由帶有.txt擴展名的主機名命名?),它包含要在該主機上運行的命令? –
你好。我正在嘗試創建一個循環。首先讀取文件host.txt,其中包含我希望運行exp腳本的所有服務器。然後,在host.txt的eof時,將位於commands.txt文件中的命令複製並粘貼到每個主機中。 – Tony
這也意味着在這個腳本expect命令將期望一些不同的主機,如$ host1->,$ host2->等.... – Tony