天天看點

小型自動化運維--expect腳本之傳遞函數

小型自動化運維--expect腳本之傳遞函數

[root@shiyanji ~]# vim 3.expect

#!/usr/bin/expect

set user [lindex $argv 0]

set host [lindex $argv 1]

set passwd "wtf"

set cm [lindex $argv 2]

spawn ssh $user@$host

expect {

"yes/no" { send "yes\r"}

"password:" { send "$passwd\r" }

}

expect "]*"

send "$cm\r"

send "exit\r"

expect eof

對檔案3.expect授予執行權限

# chmod +x 3.expect

執行3.expect

# ./3.expect root 192.168.8.103 “cd /tmp;ls”,截圖如下:

小型自動化運維--expect腳本之傳遞函數

# ./3.expect root 192.168.8.103 “w”,截圖如下:

小型自動化運維--expect腳本之傳遞函數

注:

(1)shell 中的變量是 $0 $1,而 expect 裡面的變量是 $argv 0,$argv 1。expect 腳本中的參數比 shell 中的複雜一些,而且是從數字 0 開始,[lindex #argv 0] 表示第一個參數,[lindex $argv 1] 表示第二個參數。

(2)結束符有 expect eof 和 interact,二者取一即可。

擴充:

可以設定把 passwd 作為一個參數,這樣就不存在被别人竊取密碼的情況。

set passwd [lindex $argv 3]

# ./3.expect root 192.168.8.103 “cd /tmp;ls” wtf,截圖如下:

繼續閱讀