Linux/Mac下 執行某腳本 自動輸入密碼

前提條件: 安裝了expect (mac: brew install expect)

當我們在終端啓動mysql服務,或者其他一些服務的時候, 如果權限不夠, 需要賦予root權限, 如果頻繁啓動和關閉,都需要輸入密碼, 讓人感覺很煩

建立一個自動啓動服務的腳本,該腳本能實現:

  • 無論腳本在哪裏執行, 都能進入腳本所在路徑進行執行, 並且返回當前路徑
  • 如果需要輸入root密碼, 自動輸入

直接上腳本startMysql:

#!/usr/bin/expect
#設置密碼的值
set password "295002hzx" 

#expect方式: 進入腳本所在的路徑
cd [file dirname $argv0]

#shell方式: 進入腳本所在的路徑
#$currentpath=$(cd "$(dirname "$0")";pwd)
#cd $currentpath

#執行腳本 如果沒有上一步,這裏腳本需要加絕對路徑才能正常執行
spawn sudo ./mysql.server start

#expect對通過spawn執行的shell腳本的返回進行判斷,是否包含Password字符串
expect "Password"

#如果expect監測到了包含的字符串,將輸入send中的內容,\n相當於回車
send "$password\n"

#退出expect返回終端,可以繼續輸入,否則將一直在expect不能退出到終端
interact

另附:
mac下啓動mysql服務的地方:
1.在設置裏面可以直接啓動mysql服務
2.腳本啓動的地方在mysql安裝目錄下的 support-files裏面的mysql.server腳本
例如:/usr/local/mysql-5.7.17-macos10.12-x86_64/support-files

啓動: ./mysql.server start
關閉: ./mysql.server stop

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