一、分發系統介紹
當我們要上線一個新代碼的時候,如果機器少,我們的工作量不會很大,很容易完成,如果裝置很多,有幾十台,上百台的話,那我們的工作量會非常大,而且也不規範,這時,我們就可以用可以用開源的軟體,expect腳本語言,進行實作分發系統的功能。
二、 expect腳本遠端登入
1、expect腳本遠端登入
2、安裝:yum install -y expect
3、寫一個expect的自動遠端登入腳本
内容如下:
#! /usr/bin/expect
set host "192.168.1.31" #這是expect的變量,它和shell不同的是變量前面要加set
set passwd "123456"
spawn ssh root@$host
expect {
"yes/no" { send "yes\r"; exp_continue} #第一次登入會提示yes或者是no,send是發送。\r是回車。
"assword:" { send "$passwd\r" }
}
interact # 需要停留在遠端的機器上,不需要退出。
4、給腳本權限:chmod a+x 1.expect
5、執行:./1.expect
三、 expect腳本遠端執行指令
1、自動遠端登入後,執行指令并退出
增加腳本如下内容:
#!/usr/bin/expect
set user "root"
set passwd "123456"
spawn ssh [email protected]
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"
四、expect腳本傳遞參數
#!/usr/bin/expect
set user [lindex $argv 0] #把第一個參數的值賦給user
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"