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

首頁 > 系統 > Linux > 正文

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

2019-10-26 18:55:27
字體:
來源:轉載
供稿:網友

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"選項后面的字符串填充的就是命令。但是要注意本身字符串的轉義符。

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 陵川县| 新昌县| 横峰县| 许昌县| 佳木斯市| 香格里拉县| 卢龙县| 盱眙县| 岳池县| 南宁市| 明水县| 西丰县| 忻城县| 泰宁县| 登封市| 五寨县| 六安市| 巴林左旗| 故城县| 岳普湖县| 开平市| 宽甸| 鄂托克旗| 绿春县| 竹山县| 宁都县| 山东省| 浮梁县| 葵青区| 清流县| 库伦旗| 天镇县| 陆良县| 昔阳县| 荣成市| 武冈市| 惠州市| 洛浦县| 太谷县| 额济纳旗| 垫江县|