分發系統介紹web
shell項目-分發系統-expect (expect也是一種腳本語言)shell
使用expect 能夠實現文件傳輸和遠程登陸vim
2、expect腳本遠程登陸ssh
1. 安裝expect:ide
yum install -y expectspa
2.編寫expect腳本:orm
vim /usr/local/sbin/1.expectthree
內容:圖片
#! /usr/bin/expect
set host "192.168.136.134" //設置變量host
set passwd "123456" //設置變量passwd
spawn ssh root@$host
expect {
"yes/no" { send "yes\r"; exp_continue} //通常咱們在遠程登錄一臺機器的時候會在輸入密碼的 時候提示「yes/no「關鍵字再輸入yes後才能夠輸入密碼。這裏首先是截取」「yes/no」關鍵字而後執行send「yes\r」(\r表示回程)
"assword:" { send "$passwd\r" }
}
interact
ip
(interact:表示登陸遠程機器後保留在登陸的機器。若是不加這個interact,則登陸後立馬退出。或者使用 expect eof 這個命令,則會在登陸機器後的2-3s後退出)
3.修改腳本權限:
chmod a+x one.expect
執行命令: ./one.expect
注意:在腳本中要注意的是(1)符號的大小寫(2)在expect{}的「{ 」要和expect有空格
3、 expect腳本遠程執行命令
自動遠程登陸後,執行命令並退出
:
1.腳本內容:
#!/usr/bin/expect
set user "root"
set passwd "123456"
spawn ssh $user@192.168.136.134
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"
2.編寫完腳本,修改腳本權限:
chmod a+x two.expect
3.執行腳本,判斷是否會在登錄後執行完命令退出登陸
./two.expect
成功登陸,並完成建立命令最後退出。
4、expect腳本傳遞參數
1.傳遞參數腳本內容:
#!/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"
2.編寫完腳本,修改腳本權限:
chmod a+x three.expect
3.執行腳本 並傳遞參數 ./three.expect root 192.168.136.134 w;ps
表示傳遞用戶名:root ;登陸主機ip和執行的命令w和ps