以一個例子來講ubuntu12.04下指令碼檔案內執行sudo 命令自動輸入密碼
阿新 • • 發佈:2019-02-19
原文連線http://blog.sina.com.cn/s/blog_951ca19b0101be96.html
在上一篇的文章中(發文時間為2012-10-30
16:09),掛載U盤指令碼檔案和解除安裝U盤指令碼檔案中都用到sudo命令,因此需要使用者手動的輸入密碼,這樣很麻煩,如果能在指令碼檔案中自動輸入密碼就會更加方便。PS:此篇文章中的內容參考了上一篇文章中的內容。
1.檔案U是掛載U盤的可執行指令碼檔案,程式碼為
#掛載U_盤
#!/bin/sh
sudo
mount -t vfat /dev/sdb1 U_Pan
在終端中輸入命令U(前提是進入了檔案U所在的目錄,以下同此),此時會提示[sudo]
password for usr_name: (usr_name為你的使用者名稱),此時需要手動輸入密碼,比較麻煩。
2.若在指令碼檔案中自動輸入密碼,需要安裝expect,本人也是開始學習ubuntu不久,也不清楚ubuntu12.04是否在裝系統的時候自動安裝了expect且也不知道expect是什麼意思,我就用命令安裝了expect(安裝需要的時間不長,建議新手們也都安裝一下),安裝命令為sudo apt-get install expect
3.可執行指令碼檔案u的功能也是掛載U盤,它的優點是在終端中輸入命令u後不需要手動輸入密碼,這樣掛載U盤的操作只需要輸入命令u一步即可,不需要輸入命令U和輸入密碼兩步完成。下面解釋一下檔案u裡每行程式碼的作用。u中程式碼如下
#!/usr/bin/expect
spawn su
send "password\r"
interact
第一行是固定格式,
第二行是要執行的命令,將要執行的命令放在spawn之後,
第三行是向終端傳送密碼,password是使用者密碼,
第四行是互動,執行此可執行指令碼檔案後,向終端傳送執行的過程。
自此,在可執行指令碼檔案中自動輸入密碼的工作就完成了。