1. 程式人生 > >Linux下後臺程式完成自動輸入密碼等互動行為的例子

Linux下後臺程式完成自動輸入密碼等互動行為的例子

今天要開發一個定時任務,然後加入cron列表中。但是有個問題擺在眼前,指令碼的執行中需要輸入資料庫密碼:

mysql -u root -p << SQL
use db;
set names utf8;
`cat task.sql`
SQL

執行上述程式碼後,會提示:

Enter password: 

經過搜尋,發現expect可以幫助我們完成這件事情:

將上述程式碼儲存到一個檔案中:db.sh,並且編寫如下程式碼:

#!/usr/bin/expect -f
spawn db.sh
expect "Enter password: "
send -- "password\n"
interact
那麼我們執行之後,就會進入資料庫互動介面。

第一行指示了這個指令碼要用哪個程式來執行;

第二行是重點,在EXPECT下啟動了一個我們要執行的程式;

第三行也是重點,我們要告訴expect,當什麼資訊出現時需要expect幫助我們完成互動;

第四行就是出現輸入密碼的提示時,要傳送的內容;

第五行的意思是保持互動,不要退出。如果沒有這一句,指令碼成功登入資料庫後,會立即退出。