使用autoexpect避免sftp輸入密碼
先是從資料庫中匯出所需檔案,再將此檔案轉移至一個web server,然後透過此web server用sftp傳輸給第三方的server
所用到的指令碼依次如下
先從資料庫匯出文字,並scp到web server
--為避免輸入密碼時候人機互動,需要將兩個server配置使用者等價
[oracle@justin tools]$ more sftpchenying.sh
source /home/oracle/.bash_profile
date1=`date --date='1 day ago' +%Y%m%d`
/justin/./sqluldr2_linux64_10204.bin justin/**** sql=/justin/sftp.sql field=## charset="ZHS16GBK" file=/justin/product"$date1".csv
scp /justin/product"$date1".csv
rm /justin/product"$date1".csv
在中轉server上部署以下指令碼
[deploy@justin ~]$ more sftp.sh
date1=`date --date='1 day ago' +%Y%m%d`
sftp -oPort=3222 justin@*.*.*.* << END
cd /upload
lcd /home/deploy
mput product$date1.csv
END
rm /home/deploy/product$date1.csv
同樣為了避免sftp輸入密碼的人機互動,使用expect命令
先透過root使用者yum install expect安裝expect,然後輸入autoexpect sftp.sh,此時會產生一個名為script.exp的檔案,每次只需呼叫./script.exp即可自動完成sftp到remote server並上傳檔案的操作
似乎只能透過./script.exp的方式呼叫該檔案,設定crontab時候比較麻煩,可以新建一個檔案
[deploy@justin ~]$ more sftpexec.sh
cd /home/deploy
./script.exp
Crontab設定則如下
[deploy@justin ~]$ crontab -l
0 2 * * * sh /home/deploy/sftpexec.sh > /home/deploy/sftpexec.log 2>&1
而生成的script.exp內容如下
[deploy@justin ~]$ more script.exp
#!/usr/bin/expect -f
set force_conservative 0 ;# set to 1 to force conservative mode even if
;# script. wasn't run conservatively originally
if {$force_conservative} {
set send_slow {1 .1}
proc send {ignore arg} {
sleep .1
exp_send -s -- $arg
}
}
set timeout -1
spawn ./sftp.sh
match_max 100000
expect -exact "Connecting to *.*.*.*...\r
password: "
send -- "password\r"
expect eof
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/15480802/viewspace-708026/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 使用git時避免每次提交輸入密碼Git密碼
- shell中使用sudo不輸入密碼密碼
- input 密碼輸入框如何定位,並且輸入密碼呢?密碼
- Flutter 密碼輸入框 驗證碼輸入框Flutter密碼
- 輸入密碼檢視flag密碼
- 自定義支付密碼輸入view、密碼鍵盤並自動檢測6位密碼輸入完全密碼View
- 模擬輸入密碼時顯示‘*’,然後將密碼輸出密碼
- 使用者名稱和密碼輸入練習密碼
- centos配置ssh免密碼登入後,仍提示輸入密碼CentOS密碼
- linux 指令碼切換使用者不用輸入密碼Linux指令碼密碼
- 使用者輸入的密碼和確認密碼必須一致密碼
- git每次提交都輸入密碼Git密碼
- 使ssh不用輸入密碼(轉)密碼
- 使ssh不用輸入密碼--摘密碼
- 啟動軟體輸入密碼密碼
- python輸入錯誤密碼使用者鎖定Python密碼
- iOS開發使用UIKeyInput自定義密碼輸入框iOSUI密碼
- [Linux] SSH配置了免密碼登入,登入時還要輸入密碼Linux密碼
- win7登入時需要手動輸入使用者密碼和密碼的設定方法Win7密碼
- scp不輸入密碼進行檔案傳輸密碼
- jQuery 顯示 input 輸入的密碼!jQuery密碼
- git push要輸入密碼問題Git密碼
- 輸入密碼連線過程log密碼
- push 到 github 時,不輸入密碼Github密碼
- InstallShield 隱藏密碼輸入 (轉)密碼
- 直播app原始碼,登入時自動輸入密碼/自動記住密碼APP原始碼密碼
- 自動輸入密碼使用root許可權開啟shell指令碼密碼指令碼
- 評估使用者輸入密碼的強度(用Javascript)密碼JavaScript
- 密碼輸入強度提示例項程式碼密碼
- 密碼框輸入提示效果程式碼例項密碼
- input密碼輸入提示效果程式碼例項密碼
- 無需輸入密碼,macOS 設定開機直接免密碼進入桌面密碼Mac
- sftp 傳輸檔案FTP
- 直播app原始碼,輸入密碼和使用者名稱呼叫開發者工具APP原始碼密碼
- macbook開機登入時輸入正確的密碼卻提示密碼錯誤Mac密碼
- scp後臺靜默執行(使用expect自動輸入密碼)密碼
- 為設定密碼的電腦省去輸入密碼的麻煩!密碼
- 使ssh不用輸入密碼(指令碼執行scp)密碼指令碼