Shell項目-分發系統-expect(上)

[toc]shell

分發系統-expect

1、什麼是分發系統?

現在一些比較大的企業,大都使用了負載均衡,而有時由於一些程序要更改,或者有些bug要修改,若是僅是幾臺server的話,很簡單,把已經改好的程序拷過去,或者rsync遠程推送,再或者網上NFS共享一下就能夠了;vim

但若是有幾十臺幾百臺,那樣的方法會太繁瑣,我
們此時就能夠用expect來批量實現分發任務。服務器

這個由expect來構建的系統能夠幫助咱們把更新的配置更新到每臺服務器。

什麼是expect?

  • [ ] Expect:一個實現自動交互功能的軟件套件,基於Tcl的一種腳本語言,具備簡單的語法;負載均衡

  • [ ] 功 能 :實現自動登陸遠程機器,並自動執行命令;和shell腳本結合,能夠實現徹底自動化;ssh

  • [ ] 注 意 :如果使用不帶密碼的密鑰驗證一樣能夠實現自動登陸和自動遠程執行命令。但當不能使用密鑰驗證的時候,咱們就沒有辦法了。因此,這時只知道對方機器的帳號和密碼能夠經過expect腳本實現登陸和遠程命令。

2、遠程登陸

2.1 環境需求

模板機
線上的server

2.2 模板機配置

[root@xavi ~]# yum install -y expect

2.3 自動遠程登陸,執行命令

[root@xavi ~]# cd /usr/local/sbin/
[root@xavi sbin]# vim 1.expect

#! /usr/bin/expect
set host "192.168.XXX.XXX"
set passwd "123456"
spawn ssh root@$host
expect {
"yes/no" { send "yes\r"; exp_continue} //yes \r是回車的意思
"password:" { send "$passwd\r" } //輸入密碼
}
interact  //表示結束了

mark

當遇到如上第一次鏈接須要確認的時候,直接yes \r是回車的意思,而後繼續,再次輸入密碼,這個地方的密碼就是上面定義的對方server的密碼ide

2.4 受權鏈接運行腳本

mark

3、腳本遠程執行命令 (自動遠程登陸後,執行命令並退出 )

3.1 在理解上述腳本的基礎上,修改腳本的功能:

vim 1.expect

#!/usr/bin/expect
set user "root"
set passwd "123456"
spawn ssh $user@192.168.XXX.132

expect {
"yes/no" { send "yes\r"; exp_continue}
"password:" { send "$passwd\r" }
}
expect "]*" // [root]#或者[host]$
send "touch /tmp/12.txt\r"
expect "]*"
send "echo 1212 > /tmp/12.txt\r"
expect "]*"
send "exit\r"

3.2 受權鏈接運行腳本

[root@xavi sbin]# chmod a+x 2.expect
[root@xavi sbin]# ./2.expect

mark

建立了touch /tmp/12.txt一個文件,而且在文件內寫了一個數據,而後退出遠程server。測試

mark

3.3 檢查

咱們登陸到線上的server去查看下是否已經建立了文件機內容spa

[root@izbp120j4zsv1pqp3kzyxkz ~]# cat /tmp/12.txt
1212

4、腳本傳遞參數

4.1 腳本參數設置

[root@xavi sbin]# vim 3.expect
[root@xavi sbin]# chmod a+x 3.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"

腳本中的 $argv 0 或者 $argv 1

就是所謂的執行腳本時候所輸入的第一個第二個參數。

執行測試

mark

順序是:是user+主機host+執行的命令。

mark

5、自動同步文件

5.1 配置腳本

(未完待續)code

相關文章
相關標籤/搜索