2018-7-19
20.28 expect腳本遠程登錄
20.29 expect腳本遠程執行命令
20.30 expect腳本傳遞參數
20.27 分發系統介紹
我們的一個網站在很多臺服務器上跑著,假設這個網站的後端是使用PHP編寫的,那麽當這個後端的PHP代碼需要更新或擴展的時候,要如何將這些更新、擴展的代碼全部都發布到這些服務器上?
所以分發系統就是用來完成以上這個需求的,分發系統需要完成的事情就是將需要上線的代碼分發到這些線上服務器中。我們現在要做的就是實現這個分發系統,實現這個系統需要用到兩個主要的東西就是shell和expect,通過shell結合expect可以編寫一個簡單的分發系統
20.28 expect腳本遠程登錄
yum install -y expect 安裝expect
自動遠程登錄
#! /usr/bin/expect
set host "ip地址"
set passwd "123456"
spawn ssh root@$host
expect {
"yes/no" { send "yes\r"; exp_continue}
"password:" { send "$passwd\r" }
}
interact //需要停留再遠程機器上,不加會直接退出來
成功登陸
20.29 expect腳本遠程執行命令
自動遠程登錄後,執行命令並退出
#!/usr/bin/expect
set user "root"
set passwd "123456"
spawn ssh $user@ip地址
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"
比較兩個腳本:
1腳本:登陸,exp腳本結束
2腳本:登陸完後還需要進行幾條命令,最後退出出來
20.30 expect腳本傳遞參數
傳遞參數
#!/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"
執行多條命令, 用;隔開
2018-7-19