shell腳本無密碼登錄 expect的使用方法詳解
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)文章
Shell常見知識 方便想學(xué)習(xí)linux shell的彭玉
本文給大家介紹了一些Shell小知識,供參考學(xué)習(xí)2013-01-01Shell腳本判斷Linux系統(tǒng)是32位還是64位的幾種方法分享
這篇文章主要介紹了Shell腳本判斷Linux系統(tǒng)是32位還是64位的幾種方法分享,本文共給出了4種方法實現(xiàn)系統(tǒng)位數(shù)在判斷,需要的朋友可以參考下2014-12-12淺析使用?Auditbeat?模塊監(jiān)控?shell?命令的問題
Auditbeat Audited 模塊可以用來監(jiān)控所有用戶在系統(tǒng)上執(zhí)行的 shell 命令,在終端用戶偶爾才會登錄的服務(wù)器上,通常需要進(jìn)行監(jiān)控,本文給大家介紹使用?Auditbeat?模塊監(jiān)控?shell?命令的相關(guān)知識,感興趣的朋友一起看看吧2022-02-02Shell腳本編寫Nagios插件監(jiān)控程序資源占用
這篇文章主要介紹了Shell腳本編寫Nagios插件監(jiān)控程序資源占用,本文先是給出了需求和需求分析,然后給出實現(xiàn)代碼,需要的朋友可以參考下2014-12-12linux shell腳本學(xué)習(xí)xargs命令使用詳解
xargs是一條Unix和類Unix操作系統(tǒng)的常用命令。它的作用是將參數(shù)列表轉(zhuǎn)換成小塊分段傳遞給其他命令,以避免參數(shù)列表過長的問題2013-12-12shell腳本執(zhí)行命令自動填充密碼(自動輸入密碼)
這篇文章主要介紹了shell?執(zhí)行命令自動填充密碼,文中結(jié)合實例代碼通過三種方式講解了Shell?腳本自動輸入密碼的方法,需要的朋友可以參考下2023-02-02