国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > Linux Shell > 正文

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

2020-07-27 18:50:28
字體:
來源:轉載
供稿:網友

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

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

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

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

一、單獨寫一個腳本

如 auto_scp.sh:

#!/usr/bin/expect #使用第一個參數 set server_ip [lindex $argv 0] #后面的也可以用參數[lindex $argv n] set server_port 22 set server_dir /home/testset server_user testset server_pswd testset scp_file auto_scp.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

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

"passphrase"和"password"等就是要監測的輸入提示的一部分,send "$server_pswd/n"就是要執行的命令。

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

我這里使用的是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 參數書,"-c"選項后面的字符串填充的就是命令。但是要注意本身字符串的轉義符。

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 博白县| 恭城| 河源市| 镇雄县| 威宁| 明光市| 宿松县| 永和县| 牙克石市| 嵊泗县| 青海省| 顺平县| 肇源县| 瑞安市| 土默特右旗| 三台县| 枣庄市| 克东县| 改则县| 盘山县| 勐海县| 临安市| 兴安县| 德令哈市| 邵阳市| 仁寿县| 拉萨市| 延川县| 琼海市| 乐昌市| 虞城县| 贵阳市| 丰都县| 安义县| 河东区| 嘉禾县| 昌宁县| 德阳市| 茌平县| 来安县| 万全县|