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幫助我們完成交互;

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

第五行的意思是保持交互,不要退出。如果沒有這一句,腳本成功登錄數據庫後,會立即退出。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章