shell腳本無(wú)密碼登錄 expect的使用方法詳解
shell腳本無(wú)密碼登錄 expect的使用方法詳解
今天需要做一個(gè)定時(shí)任務(wù)腳本將最新的數(shù)據(jù)包文件傳到遠(yuǎn)程的服務(wù)器上,雖然有密鑰但也是要求輸入密碼的那種,所以只能另想辦法實(shí)現(xiàn)讓腳本自動(dòng)輸入密碼了。
從網(wǎng)上查到使用expect可以,簡(jiǎn)單研究了一下,效果不錯(cuò)。
因?yàn)槲业牟僮飨到y(tǒng)沒(méi)有安裝expect,所以直接"yum -y install expect",你可以根據(jù)你的操作系統(tǒng)安裝expect,或者源碼編譯。
安裝好之后就可以使用了,這里有幾種方法:
一、單獨(dú)寫一個(gè)腳本
如 auto_scp.sh:
#!/usr/bin/expect
#使用第一個(gè)參數(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è)置超時(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)行選擇,保存退出之后,對(duì)該文件加上可執(zhí)行權(quán)限,運(yùn)行
"./auto_scp.sh 2.2.2.2"就可以了,"2.2.2.2"就是傳入的第一參數(shù)。
"passphrase"和"password"等就是要監(jiān)測(cè)的輸入提示的一部分,send "$server_pswd\n"就是要執(zhí)行的命令。
二、在腳本中使用----我比較喜歡這個(gè)
我這里使用的是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ù)書(shū),"-c"選項(xiàng)后面的字符串填充的就是命令。但是要注意本身字符串的轉(zhuǎn)義符。
如有疑問(wèn)請(qǐng)留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
- Shell腳本之Expect免交互的實(shí)現(xiàn)
- shell中使用expect命令進(jìn)行遠(yuǎn)程執(zhí)行命令腳本
- 利用expect命令實(shí)現(xiàn)Shell自動(dòng)化交互的方法詳解
- shell腳本報(bào)錯(cuò):"[: =: unary operator expected"解決辦法
- shell腳本通過(guò)expect實(shí)現(xiàn)自動(dòng)單邊無(wú)密登錄功能
- shell中嵌套執(zhí)行expect命令實(shí)例
- 用expect實(shí)現(xiàn)的自動(dòng)登錄到多臺(tái)服務(wù)器的shell腳本
- shell結(jié)合expect寫的批量scp腳本工具
- shell中expect的實(shí)現(xiàn)示例
相關(guān)文章
Shell腳本實(shí)現(xiàn)檢測(cè)進(jìn)程是否正在運(yùn)行
這篇文章主要介紹了Shell腳本實(shí)現(xiàn)檢測(cè)進(jìn)程是否正在運(yùn)行,本文給出的代碼簡(jiǎn)潔清晰,并給出了使用方法,需要的朋友可以參考下2015-01-01
完美解決mac環(huán)境使用sed修改文件出錯(cuò)的問(wèn)題
下面小編就為大家?guī)?lái)一篇完美解決mac環(huán)境使用sed修改文件出錯(cuò)的問(wèn)題。2017-04-04
淺析Linux系統(tǒng)下安裝wetty和使用說(shuō)明
本篇文章主要給大家介紹linux系統(tǒng)下安裝wetty和使用說(shuō)明,以及l(fā)inux tty命令學(xué)習(xí)總結(jié),感興趣的朋友跟著小編一起學(xué)習(xí)吧2015-10-10
Shell腳本實(shí)現(xiàn)SSL證書(shū)過(guò)期巡檢
我們知道?SSL?證書(shū)是會(huì)過(guò)期的,一旦過(guò)期之后需要重新申請(qǐng),如果沒(méi)有及時(shí)更換證書(shū)的話,就有可能導(dǎo)致網(wǎng)站出問(wèn)題,所以本文分享一個(gè)自動(dòng)檢測(cè)?SSL?是否過(guò)期的?shell?腳本吧2023-08-08

