小編給大家分享一下shell腳本無密碼登錄expect的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
一、單獨寫一個腳本
如 auto_scp.sh:
#!/usr/bin/expect
#使用第一個參數
set server_ip [lindex $argv 0]
#后面的也可以用參數[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
# 設置超時時間
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"選項后面的字符串填充的就是命令。但是要注意本身字符串的轉義符。
以上是“shell腳本無密碼登錄expect的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。