欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

shell腳本無密碼登錄 expect的使用方法詳解

 更新時間:2017年10月19日 14:10:55   作者:gaoyaohuachina  
這篇文章主要介紹了shell腳本無密碼登錄 expect的使用方法詳解的相關(guān)資料,希望通過本文能幫助到大家,需要的朋友可以參考下

shell腳本無密碼登錄 expect的使用方法詳解

今天需要做一個定時任務(wù)腳本將最新的數(shù)據(jù)包文件傳到遠(yuǎn)程的服務(wù)器上,雖然有密鑰但也是要求輸入密碼的那種,所以只能另想辦法實現(xiàn)讓腳本自動輸入密碼了。

從網(wǎng)上查到使用expect可以,簡單研究了一下,效果不錯。 

因為我的操作系統(tǒng)沒有安裝expect,所以直接"yum -y install expect",你可以根據(jù)你的操作系統(tǒng)安裝expect,或者源碼編譯。
安裝好之后就可以使用了,這里有幾種方法:

一、單獨寫一個腳本

如 auto_scp.sh:

#!/usr/bin/expect 
#使用第一個參數(shù) 
set server_ip [lindex $argv 0] 
#后面的也可以用參數(shù)[lindex $argv n] 
set server_port 22 
set server_dir /home/test
set server_user test
set server_pswd test
set scp_file auto_scp.sh 
                                               
# 設(shè)置超時時間 
set timeout 60 
spawn scp -P $server_port $scp_file $server_user@$server_ip:$server_dir 
expect { 
    "passphrase"
    { 
      send "$server_pswd\n"; 
    } 
    "password"
    { 
       send "$server_pswd\n"; 
    } 
    "yes/no"
    { 
       send "yes\n"; 
       exp_continue; 
    } 
} 
expect eof

我這里的變量都是隨意設(shè)置的,你可以根據(jù)你的情況進(jìn)行選擇,保存退出之后,對該文件加上可執(zhí)行權(quán)限,運行
"./auto_scp.sh 2.2.2.2"就可以了,"2.2.2.2"就是傳入的第一參數(shù)。

"passphrase"和"password"等就是要監(jiān)測的輸入提示的一部分,send "$server_pswd\n"就是要執(zhí)行的命令。

二、在腳本中使用----我比較喜歡這個

我這里使用的是Here document方法。

...... 
...... 
expect <<!! 
set timeout 60 
spawn scp -P $server_port $scp_file $server_user@$server_ip:$server_dir 
expect { 
    "passphrase"
    { 
      send "$server_pswd\n"; 
    } 
    "password"
    { 
       send "$server_pswd\n"; 
    } 
    "yes/no"
    { 
       send "yes\n"; 
       exp_continue; 
    } 
} 
expect eof 
!! 
......

變量都是我從配置文件中獲取的,這里不再贅述了。

三、在腳本中使用

也是在腳本使用,但是不是用的Here document方法,而是使用expect -c 參數(shù)書,"-c"選項后面的字符串填充的就是命令。但是要注意本身字符串的轉(zhuǎn)義符。

如有疑問請留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

相關(guān)文章

最新評論