分發系統介紹、expect腳本遠程登陸、登陸執行命令後退出、腳本傳遞參數

                分發系統介紹web

shell項目-分發系統-expect (expect也是一種腳本語言)shell

使用expect 能夠實現文件傳輸和遠程登陸vim

 


                 2、expect腳本遠程登陸ssh

1. 安裝expect:ide

yum install -y expectspa


QQ圖片20180606234643.png

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

QQ圖片20180607002913.png

 


注意:在腳本中要注意的是(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 "]*"   //當遇到字符「]*」,通常登陸之後的都是']#'。普通用戶爲']$'  ,此處']*'表示通配  QQ圖片20180607003608.png

send "touch /tmp/12.txt\r"
expect "]*"
send "echo 1212 > /tmp/12.txt\r"
expect "]*"
send "exit\r"

 

 QQ圖片20180607003900.png


2.編寫完腳本,修改腳本權限:

chmod a+x two.expect


3.執行腳本,判斷是否會在登錄後執行完命令退出登陸

./two.expect

QQ圖片20180607004253.png

成功登陸,並完成建立命令最後退出。


                   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

相關文章
相關標籤/搜索