Linux學習總結(六十三)expect腳本上

expect是Unix系統中用來進行自動化控制和測試的軟件工具,由Don Libes製做,做爲Tcl腳本語言的一個擴展,應用在交互式軟件中如telnet,ftp,Passwd,fsck,rlogin,tip,ssh等等
yum install -y expectshell

腳本一:

自動遠程登陸ssh

#! /usr/bin/expect
set host "192.168.226..130"
set passwd "123456"
spawn ssh root@$host
expect {
"yes/no" { send "yes\r"; exp_continue}
"assword:" { send "$passwd\r" }
}
interact

運行腳本
chmod a+x 1.expect
./1.expect
備註,當初次ssh登錄時,會提示輸入yes或者no,所以須要發送一個yes,再回車。緊接着輸入帳戶的密碼。若是作了祕鑰認證,則不須要輸入密碼。interact 表示保持一個登錄狀態。不加的話,會立刻退出來。ide

腳本二:

自動遠程登陸後,執行命令並退出工具

#!/usr/bin/expect
set user "root"
set passwd "123456"
spawn ssh $user@192.168.226.130
expect {
"yes/no" { send "yes\r"; exp_continue}
"password:" { send "$passwd\r" }
}
expect "]*"
send "touch /tmp/12.txt\r"
expect "]*"
send "echo 1212 > /tmp/12.txt\r"
expect "]*"
send "exit\r"

備註:] 表示系統登錄進來,輸入光標前面的狀態提示符,root用戶爲]# 普通用戶爲]$,爲通配符。上面的腳本表示登錄進系統,在當前用戶目錄下,執行了兩條命令。測試

腳本三:

參數傳遞。至關於shell中的$1,$2,$3spa

#!/usr/bin/expect
set user [lindex $argv 0]
set host [lindex $argv 1]
set passwd "123456"
set cm [lindex $argv 2]
spawn ssh $user@$host
expect {
"yes/no" { send "yes\r"}
"password:" { send "$passwd\r" }
}
expect "]*"
send "$cm\r"
expect "]*"
send "exit\r"

備註:該腳本咱們定義了三個須要傳遞的參數,第一個爲要登錄機器的用戶名,第二個爲主機ip,第三個爲登錄系統之後須要發送的命令。所以當運行腳本時,須要加上這三個參數。
chmod a+x 3.expect
./expect root 192.168.226.130 ls
若是須要一次性發送多個命令能夠這樣寫「ls;w;ifconfig",或者在腳本中再定義幾個參數。code

腳本四:

同步文件 rsync的應用ip

#!/usr/bin/expect
set passwd "123456"
spawn rsync -av root@192.168.226.130:/tmp/12.txt /tmp/
expect {
"yes/no" { send "yes\r"}
"password:" { send "$passwd\r" }
}
expect eof

備註:該腳本至關於直接執行了一個作遠程同步的rsync命令,區別是裏面嵌入了登錄密碼,所以能夠不須要和用戶交互直接完成文件的同步。expect eof 的做用是讓遠程鏈接保持一個狀態,不加的話會在同步未完成時,直接斷開。同步

腳本五:

指定host和要同步的文件it

#!/usr/bin/expect
set passwd "123456"
set host [lindex $argv 0]
set file [lindex $argv 1]
spawn rsync -av $file root@$host:$file
expect {
"yes/no" { send "yes\r"}
"password:" { send "$passwd\r" }
}
expect eof

備註:該腳本的功能是將本地文件同步到遠程主機上,定義了兩個參數,第一個是運程主機ip,第二個是要同步的文件名。該文件必須在本地存在,執行腳本時,該文件名參數要使用絕對路徑。chmod a+x 5.expect./5.expect 192.168.226.130 "/tmp/12.txt"

相關文章
相關標籤/搜索