天天看點

分發系統介紹、 expect腳本遠端登入、遠端執行指令、傳遞參數一、分發系統介紹二、 expect腳本遠端登入三、 expect腳本遠端執行指令四、expect腳本傳遞參數

一、分發系統介紹

當我們要上線一個新代碼的時候,如果機器少,我們的工作量不會很大,很容易完成,如果裝置很多,有幾十台,上百台的話,那我們的工作量會非常大,而且也不規範,這時,我們就可以用可以用開源的軟體,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"
           

繼續閱讀