您好,登錄后才能下訂單哦!
小編給大家分享一下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進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。