1. 程式人生 > >以一個例子來講ubuntu12.04下指令碼檔案內執行sudo 命令自動輸入密碼

以一個例子來講ubuntu12.04下指令碼檔案內執行sudo 命令自動輸入密碼

原文連線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
do mount -t vfat /dev/sdb1 U_Pan
 send "password\r"
 interact
 第一行是固定格式,
 第二行是要執行的命令,將要執行的命令放在spawn之後,
 第三行是向終端傳送密碼,password是使用者密碼,
 第四行是互動,執行此可執行指令碼檔案後,向終端傳送執行的過程。

自此,在可執行指令碼檔案中自動輸入密碼的工作就完成了。