分發系統介紹,expect腳本遠程登錄, expect腳本遠程執行命令, expect腳本傳遞參數
當我們要上線一個新代碼的時候,如果機器少,我們的工作量不會很大,很容易完成,如果設備很多,有幾十臺,上百臺的話,那我們的工作量會非常大,而且也不規範,這時,我們就可以用可以用開源的軟件,expect腳本語言,進行實現分發系統的功能。
expect腳本遠程登錄
首先yum安裝expect
yum install -y expect
然後寫一個expect的遠程登錄腳本
#! /usr/bin/expect
set host "192.168.133.132" 這是expect的變量,它和shell不同的是變量前面要加set
set passwd "123456" 這是expect的變量,它和shell不同的是變量前面要加set
expect {
"yes/no" { send "yes\r"; exp_continue} 第一次登錄會提示yes或者是no,send是發送。\r是回車。exp_continue表示繼續。
"assword:" { send "$passwd\r" }
}
interact 需要停留在遠程的機器上,不需要退出。
然後給他增加權限
[root@linletao-001 ~]# chmod a+x 1.expect
[root@linletao-001 ~]# ./1.expect
spawn ssh [email protected]
The authenticity of host ‘192.168.218.129 (192.168.218.129)‘ can‘t be established.
ECDSA key fingerprint is SHA256:qNyAkC/T6wTJaqi1O2Ay20Y28uD8VsmNY3lgf4eTf60.
ECDSA key fingerprint is MD5:28:3a:76:a8:6e:db:04:ed:85:ff:fb:fe:25:33:b0:37.
Are you sure you want to continue connecting (yes/no)? yes
[email protected]‘s password:
Last login: Tue Jun 5 22:29:13 2018 from 192.168.218.1
[root@localhost ~]#
主機名已更改,登陸成功。
expect腳本遠程執行命令
#!/usr/bin/expect
set user "root"
set passwd "19860127"
spawn ssh [email protected]
expect {
"yes/no" { send "yes\r"; exp_continue}
"password:" { send "$passwd\r" }
}
expect "]" 當我們遇到】時,
send "touch /tmp/12.txt\r" 在tmp目錄下創建文件12.txt,然後回車
expect "]"
send "echo 1212 > /tmp/12.txt\r" 打印1212到我們剛創建的/tmp/12.txt
expect "]*"
send "exit\r" 退出
添加權限
[root@linletao-001 ~]# chmod a+x 2.expect
執行腳本
[root@linletao-001 ~]# ./2.expect
spawn ssh [email protected]
[email protected]‘s password:
Last login: Tue Jun 5 22:40:40 2018 from 192.168.218.130
[root@localhost ~]# touch /tmp/12.txt
[root@localhost ~]# echo 1212 > /tmp/12.txt
[root@localhost ~]# [root@linletao-001 ~]#
expect腳本傳遞參數
#!/usr/bin/expect
set user [lindex $argv 0] lindex $argv 第一個參數,這個命令是將值賦予user中
set host [lindex $argv 1]
set passwd "登錄機器的密碼"
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"
分發系統介紹,expect腳本遠程登錄, expect腳本遠程執行命令, expect腳本傳遞參數