1. 程式人生 > >2018-7-19

2018-7-19

ont word bre -h system 介紹 wid src 使用

20.27 分發系統介紹
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