Linux 伺服器系統管理第十四章 系統管理程式設計      下一頁

第十四章 系統管理程式設計

內容:

14-1 帳戶查詢程式

管理帳戶是系統管理員入門的必修課程,如何增加、刪除或暫停某一帳號登入系統,可能藉由前面所介紹的命令操作即可達成。但如果管理大量帳戶(如班級同學),僅靠操作命令來達成,可能要浪費不少時間。我們既然學習了 Shell script 程式設計,為何不利用它來製作一些功能較強的管理工具呢?這裡作者僅提出幾個簡單範例,讓讀者了解 Shell script 程式設計的功能何在,有了這些簡單概念之後,相信讀者很快的即可發展出功能更強的管理工具出來。

當系統管理員最起碼需知道,在您的系統內到底有哪些一般帳戶可以登入。接下來,介紹兩個基本查詢程式。

14-1-1 查詢系統帳戶名稱

/etc/passwd 檔案,每一行表示一筆紀錄,並描述一個帳戶。其中 UID(使用者識別碼) 如果超過 500 大多給一般帳戶使用,我們可以利用這一點來查詢,到底系統有哪些一般帳戶。UID 位於 /etc/passwd 檔案的第三個欄位,我們只要將該欄位內容大於或等於 500 的第一個欄位名稱印出即可。我們可利用 awk 命令查詢,如下:

(1) 所先指定欄位分隔標示冒號(-F :);

(2) 命令語句是:第三欄位大於 500$3 > 500),

(3) 則印出第一欄位內容({print $1}),

(4) 並導入 /etc/passwd 檔案。

執行此命令時,將 /etc/passwd 檔案內以每一行為一筆資料,一筆接一筆進行比對,再印出結果,操作如下:

[tsnien@Secure-1 book]$ awk -F : '$3 >= 500 {print $1}' /etc/passwd

tsnien

user1

nien

guest

nien1

admin

grad0

mis49411119

guest1

student

14-1-2 查詢帳戶名稱

當使用者要求建立帳戶時,大多會提供帳戶名稱(Login name)。基本上,帳戶名稱是不可以重複的,我們編寫一程式檢視使用者輸入的帳戶名稱是否重複。比對方法很簡單,輸入名稱與 /etc/passwd 中第一個欄位內容相比對,如果相同則表示該名稱已被使用。我們利用 Awk 命令稿製作,程式內容如下:$ vi ex14_2

# file name: ex14_2

# 功能 Check account

# awk script

 

# 以下是檔案搜尋之前執行敘述 BEGIN { ...}

BEGIN {

    flag=0;

    printf("please enter name=>");

    getline name <"/dev/stdin";

}

 

# 開始搜尋檔案內一筆接一筆紀錄 { ...}

{

     if ($1 == name)

         flag=1;

}

 

# 以下是搜尋完畢後執行敘述 END { ...}

END {

    if (flag == 0)

        printf("%s 帳戶可正常開啟\n", name);

    else

        printf("%s 該帳戶名稱已被使用,請另選其它名稱\n", name);

}

執行結果如下:

[root@Secure-1 ~]# awk -F: -f  ex14_2  /etc/passwd

please enter name=>tsnien

tsnien 該帳戶名稱已被使用,請另選其它名稱

[root@Secure-1 ~]# awk -F: -f Check_account  /etc/passwd

please enter name=>typeo

typeo 帳戶可正常開啟

 

翻轉工作室:粘添壽

 

Linux 伺服器系統管理 - CentOS:

 

 

 

翻轉電子書系列: