分發系統介紹、expect腳本遠程登錄、登錄執行命令後退出、腳本傳遞參數
shell項目-分發系統-expect (expect也是一種腳本語言)
使用expect 可以實現文件傳輸和遠程登錄
二、expect腳本遠程登錄
1. 安裝expect:
yum install -y expect
2.編寫expect腳本:
vim /usr/local/sbin/1.expect
內容:
#! /usr/bin/expect
set host "192.168.136.134" //設置變量host
set passwd "123456" //設置變量passwd
spawn ssh root@$host
"yes/no" { send "yes\r"; exp_continue} //一般我們在遠程登陸一臺機器的時候會在輸入密碼的 時候提示“yes/no“關鍵字再輸入yes後才可以輸入密碼。這裏首先是截取”“yes/no”關鍵字然後執行send“yes\r”(\r表示回程)
"assword:" { send "$passwd\r" }
}
interact
(interact:表示登錄遠程機器後保留在登錄的機器。如果不加這個interact,則登錄後立馬退出。或者使用 expect eof 這個命令,則會在登錄機器後的2-3s後退出)
3.修改腳本權限:
chmod a+x one.expect
執行命令: ./one.expect
註意:在腳本中要註意的是(1)符號的大小寫(2)在expect{}的“{ ”要和expect有空格
三、 expect腳本遠程執行命令
自動遠程登錄後,執行命令並退出
:
1.腳本內容:
#!/usr/bin/expect
set user "root"
set passwd "123456"
spawn ssh [email protected]
expect {
"yes/no" { send "yes\r"; exp_continue}
}
//登錄以後
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 成功登錄,並完成創建命令最後退出。 四、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
分發系統介紹、expect腳本遠程登錄、登錄執行命令後退出、腳本傳遞參數