Linux 實 機 操 作 測 驗 與 評 分 系 統 設 計 謝 帛 勳 朝 陽 科 技 大 學 資 訊 工 程 系 413 台 中 市 霧 峰 區 吉 峰 東 路 168 號 (04)23323000 ext 4560 trash314107@gmail.com 王 德 譽 朝 陽 科 技 大 學 資 訊 工 程 系 413 台 中 市 霧 峰 區 吉 峰 東 路 168 號 (04)23323000 ext 4538 dywang@csie.cyut.edu.tw 摘 要 由 於 資 訊 科 技 的 普 及, 現 今 考 試 的 方 式 除 了 筆 試 外, 多 數 的 測 驗 會 藉 由 資 訊 系 統 的 輔 助 來 進 行 最 常 使 用 的 方 式 是 線 上 測 驗, 測 驗 題 型 含 括 選 擇 題 是 非 題 填 充 題, 計 算 題... 等 雖 可 大 量 減 化 筆 試 作 業, 但 對 於 某 些 需 要 實 機 操 作 的 訓 練, 如 Linux 的 實 機 操 作 成 果 評 估, 線 上 測 驗 顯 然 無 法 達 到 很 好 的 效 果 為 更 真 實 反 應 學 生 的 實 機 練 習 成 果, 本 研 究 自 行 設 計 Linux 系 統, 伺 服 器 可 提 供 用 戶 端 的 測 驗 環 境 安 裝 及 測 驗 結 果 評 分, 用 戶 端 可 使 用 網 路 開 機 模 式, 也 就 是 PXE (Preboot execution Environment) 來 安 裝, 可 大 量 簡 化 測 驗 環 境 的 安 裝, 安 裝 測 驗 題 目 隨 機 選 取, 每 位 學 生 的 題 目 不 會 完 全 相 同, 以 避 免 學 生 死 記 題 型 或 作 弊 本 研 究 更 於 伺 服 器 端 以 Shell Scripts 設 計 評 分 系 統, 可 逐 一 登 入 學 生 的 系 統, 檢 查 學 生 實 機 作 答 情 況 並 記 錄 結 果, 可 以 即 時 評 分 並 檢 查 出 學 生 作 答 錯 誤 原 因, 供 學 生 改 正 參 考 用, 因 此 不 但 可 以 加 強 學 生 實 機 操 作 能 力, 亦 可 導 正 學 生 學 習 態 度 與 方 式 關 鍵 詞 : 實 機 操 作 Shell Scripts Linux PXE Abstract Due to the popularity of information technology, in addition to the written exam the way, most of the tests will be assisted information systems to carry out. The most commonly is online test, tests kinds of questions encompasses multiple choice, true or false question, fill in the blanks, the math question and so on. Can greatly simplify the written work, but some require real machine operations training, such as real machine operations assessment of Linux, online test apparently unable to achieve good results. To better reflect the true results of the students real machine operations exercises, this study is self-design Linux system, the server provides the client test environment to install and test score results, the client can use the network boot mode, which is Preboot execution Environment to installation, can greatly simplify the installation of test environment, install the test question were randomly selected, every student question will not be exactly the same, in order to avoid the kinds of questions the students to memorize or cheating. This study is more on the server side to Shell scripts designed scoring system, login one by one student systems, check the students real machine operations case to answer and record the results, real time scores and check out the student answered the wrong reasons for students to correct reference, so not only can enhance students ability of real machine operations, also correcting students learning attitude and style. Keywords:Real machine operations, Shell scripts, Linux, Preboot execution Environment. 1 前 言 網 際 網 路 技 術 興 起 之 後, 數 位 學 習 ( e- Learning )[1, 2, 3] 是 學 生 們 應 用 數 位 媒 介 學 習 的 過 程, 然 而 學 生 們 與 教 學 者 不 再 受 限 於 固 定 時 間 地 點 限 制 的 傳 統 式 面 對 面 授 課 教 學, 反 而 可 以 隨 時 隨 地 透 過 網 路 進 行 互 動 教 學, 學 生 們 可 以 依 自 己 的 學 習 環 境 及 狀 態 彈 性 的 調 整 自 己 的 學 習 進 度 ; 而 教 學 者 也 可 視 學 生 的 情 況 調 整 其 教 學 進 度, 充 分 發 揮 有 如 一 對 一 教 學 的 實 體 效 果 而 現 今 較 多 樣 化 的 數 位 媒 介 包 括 網 際 網 路 企 業 網 路 電 腦 衛 星 廣 播 互 動 式 電 視 及 光 碟 等 數 位 學 習 的 類 型 大 致 上 可 分 為 三 個 類 型, 分 別 為 同 步 學 習 和 非 同 步 學 習
同 步 學 習 指 教 學 者 與 學 生 們 一 起 在 指 定 的 時 間 內 上 線 學 習, 利 用 如 虛 擬 教 室 視 訊 會 議 串 流 媒 體 ( Streaming Video ) 等 互 動 工 具 而 優 點 為 可 以 解 決 地 理 上 限 制, 缺 點 則 無 時 間 上 的 彈 性 ; 非 同 步 學 習 較 具 彈 性, 學 生 們 可 依 自 己 需 求, 在 任 何 時 間 任 何 地 點 上 線 學 習, 但 相 對 的 互 動 性 較 差, 使 用 的 工 具 如 討 論 區 或 E-Mail 等 傳 統 的 考 試 方 式 大 多 為 筆 試, 而 筆 試 指 以 文 字 表 達 符 號 劃 記 或 電 腦 作 答 等 方 式, 測 驗 學 生 們 的 知 識 能 力 及 有 關 事 項 就 國 家 考 試 方 式 大 體 上 以 筆 試 為 主 [4] 筆 試 雖 然 能 增 加 學 生 們 的 基 礎, 但 大 多 還 是 無 法 達 到 針 對 專 業 能 力 上 的 練 習 和 測 驗, 而 筆 試 的 題 型 不 外 乎 為 選 擇 題 是 非 題 填 充 題 與 問 答 題 居 多, 但 由 於 題 庫 的 題 目 數 固 定, 會 讓 部 份 學 生 得 以 猜 題 或 死 記 題 型, 失 去 測 驗 的 公 平 性 [5] 這 樣 只 能 增 加 學 生 們 的 專 業 知 識 的 基 礎, 以 至 於 無 法 讓 學 生 們 能 有 在 專 業 上 的 提 升 因 此, 本 研 究 之 伺 服 器 端 以 Linux 為 系 統, 而 用 戶 端 則 利 用 預 啟 動 執 行 環 境 ( Preboot execution Environment, PXE ) 安 裝 成 基 礎 的 Linux 系 統 環 境, 並 以 實 機 操 作 的 方 式, 從 伺 服 器 端 的 題 庫 隨 機 選 題 後 分 別 傳 送 給 用 戶 端, 而 這 些 題 目 供 人 練 習 與 測 驗, 伺 服 器 用 來 檢 測 與 評 分 用 戶 端 的 所 進 行 的 題 目, 將 用 戶 端 所 進 行 的 題 目 一 一 的 檢 測 是 否 正 確 或 錯 誤, 最 後 把 評 分 結 果 回 傳 到 伺 服 器 做 紀 錄 2 系 統 環 境 Linux 是 一 套 自 由 開 放 而 且 免 費 的 作 業 系 統, 由 於 開 放 源 碼 ( Open Source ) 的 特 點, 可 以 任 意 的 修 改 Linux 及 控 制 整 個 系 統 基 本 服 務 的 核 心 程 式 ( Kernel ), 從 最 底 層 的 核 心 以 至 於 上 層 的 應 用 程 式 ( Application ) 都 可 以 依 照 自 己 的 需 求 來 做 修 改 而 Shell script[6] 文 字 介 面 指 令 功 能 強 大, 它 是 利 用 shell 的 功 能 來 撰 寫 的 一 個 程 式, 這 個 程 式 是 使 用 純 文 字 檔, 將 一 些 shell 的 語 法 與 指 令 寫 在 裡 面, 搭 配 正 規 表 示 法 管 線 命 令 與 資 料 流 重 導 向 等 功 能, 來 達 到 我 們 所 想 要 的 處 理 目 的 [7] 只 要 撰 寫 腳 本 就 可 以 處 理 很 多 字 串, 好 讓 工 作 自 動 化 的 完 成, 而 且 遠 端 操 作 亦 相 當 快 速 方 便 Linux 有 許 多 各 式 各 樣 的 Linux 發 行 版, 這 些 發 行 版 各 有 特 色, 但 不 管 那 種 套 件, shell 指 令 與 腳 本 撰 寫 皆 無 太 大 的 不 同 [8] 本 系 統 是 以 shell script 來 隨 機 選 題 並 傳 送 給 用 戶 端, 最 後 伺 服 器 端 會 自 動 處 理 題 目 的 正 確 與 錯 誤, 而 這 些 選 出 來 題 目 在 各 個 用 戶 端 中 都 不 盡 相 同, 利 用 撰 寫 腳 本 來 確 認 這 些 題 目 是 否 正 確 還 是 錯 誤 並 做 紀 錄 2.1 環 境 建 立 現 在 的 Linux 發 行 版 本 [9] 種 類 相 當 的 繁 多, 這 些 都 可 以 從 Linux 檔 案 伺 服 器 內 [10] 自 由 的 下 載 使 用 並 安 裝 目 前 Linux 系 統 的 安 裝 方 法 大 致 可 分 為 光 碟 ( CD-ROM ) 預 啟 動 執 行 環 境 ( Preboot execution Environment, PXE ) 隨 身 碟 ( USB ) 三 種 方 式, 這 三 種 方 式 都 需 要 從 Linux 檔 案 伺 服 器 內 下 載.iso 檔 並 以 它 們 各 自 的 方 法 來 安 裝, 而 CD-ROM 也 可 製 作 成 Live CD, 它 們 各 有 優 缺 點 如 表 1 本 統 主 要 是 以 撰 寫 shell script 的 方 式 來 進 行 自 定 題 目 的 檢 測, 而 每 個 Linux 發 行 版 都 是 使 用 shell script 來 撰 寫, 所 以 並 沒 有 要 求 是 以 何 種 發 行 版 來 當 作 作 業 系 統 以 CD-ROM 方 式 安 裝, 只 需 要 從 Linux 檔 案 伺 服 器 內 下 載 並 燒 入 成 光 碟 就 可 安 裝 使 用 ; 以 Live CD 方 式 的 話, 這 方 法 不 需 要 安 裝 就 可 以 直 接 用 光 碟 開 機 啟 動 ; 以 PXE 方 式 來 安 裝, 需 要 先 下 載.iso 檔 並 安 裝 來 當 作 伺 服 器, 再 利 用 PXE 方 式 安 裝 到 多 台 用 戶 端 上, PXE[11] 是 讓 電 腦 設 備 通 過 網 卡 獨 立 地 使 用 數 據 設 備 ( 如 硬 碟 ) 或 者 安 裝 作 業 系 統 它 是 一 種 透 過 網 際 網 路 來 載 入 系 統 的 服 務, 基 本 運 行 的 原 理 是 將 伺 服 器 端 和 用 戶 端 的 電 腦 設 備 利 用 網 路 來 相 互 的 連 結, 以 此 達 到 資 料 與 數 據 之 間 的 傳 遞, 而 絕 大 部 分, PXE 大 多 是 來 拿 安 裝 作 業 系 統, 因 可 減 少 安 裝 環 境 所 耗 費 的 時 間 ; 而 以 USB 方 式 安 裝, 需 要 下 載.iso 檔 並 安 裝 到 USB, 這 方 法 安 裝 後 直 接 使 用 USB 開 機 啟 動 本 系 統 設 計 環 境 CentOS 6[12] 為 例, 先 從 Linux 檔 案 伺 服 器 下 載 要 安 裝 的 發 行 版 映 像 檔.iso 燒 成 光 碟, 以 此 光 碟 開 機 並 依 安 裝 指 示 完 成 安 裝, 並 將 它 當 作 伺 服 器, 再 利 用 PXE 和 kickstart 檔 案 [13] 將 其 他 電 腦 設 備 安 裝 設 置 為 用 戶 端, 而 用 戶 端 們 的 桌 面 會 有 題 目 連 結 可 以 觀 看 題 目, 它 們 需 要 使 用 KVM 虛 擬 機 ( Kernel-based Virtual Machine ) 來 實 機 操 作 及 撰 寫 shell script, 以 避 免 操 作 不 當 使 整 個 作 業 系 統 損 壞 2.2 Shell script 程 式 語 言 Shell script[14, 15, 16] 是 一 個 類 似 於 早 期 DOS 年 代 中 批 次 檔 (.bat ) 的 直 譯 式 的 語 言, 簡 單 的 說, Shell Script 就 是 將 一 堆 shell 中 的 指 令 放 在 一 個 文 字 檔 中 來 執 行, Shell 可 讓 使 用 者 下 命 令 執 行 想 要 的 工 作, 所 以 它 必 須 具 備 解 析 命 令 ( Parsing command ) 的 能 力, 這 也
表 1: 系 統 安 裝 方 法 之 優 缺 點 安 裝 優 點 缺 點 方 法 CD- ROM 適 合 初 學 者 學 習 和 攜 帶 方 便 燒 入 失 敗 造 成 光 碟 的 浪 費 以 及 無 法 修 改 光 碟 PXE 可 以 同 時 安 裝 多 台 用 戶 端 需 要 網 路 才 能 安 裝 USB 安 裝 後 可 直 接 使 用 USB 開 機 啟 動 而 不 用 燒 入 到 光 碟, 修 改 系 統 時 可 以 直 接 修 改 即 可 以 及 方 便 攜 帶 容 量 較 一 般 硬 碟 小 和 建 議 使 用 USB 3.0 讀 寫 速 度 較 快 Live CD 不 需 要 安 裝 也 可 直 接 用 光 碟 開 機 啟 動, 關 掉 後 可 回 復 到 原 來 系 統 無 法 修 改 光 碟 內 的 資 料 #!/bin/bash 2 echo Hello world!! 程 式 1: Shell script 範 例 就 是 被 稱 為 命 令 直 譯 器 ( Command Interpreter ) 的 原 因 而 主 要 用 途 就 是 用 來 協 助 使 用 者 在 UNIX/Linux 環 上, 能 更 自 動 化 的 方 式 來 執 行 想 要 執 行 的 指 令 執 行 腳 本 時 shell 會 一 行 行 的 執 行, 若 前 面 的 命 令 未 完 成, 後 面 的 指 令 就 不 會 執 行 以 vim 撰 寫 腳 本 如 程 式 1, 其 中 除 第 1 行 #!/bin/bash 宣 告 此 腳 本 使 用 命 令 /bin/bash 執 行 外, 其 餘 的 # 都 為 註 解 並 不 會 執 行 ; 而 第 2 行 的 echo 為 列 出 一 個 字 串 執 行 腳 本 的 方 法 大 致 上 有 三 種 如 程 式 2, 其 中 第 1 行 和 第 2 行 指 令 可 以 直 接 的 執 行, 而 若 以 腳 本 內 部 宣 告 命 令 直 接 執 行 的 話, 需 要 第 6 行 的 指 令 來 增 加 該 腳 本 可 執 行 的 權 限, 這 樣 才 可 以 執 行 第 3 行 的 指 令, 不 然 會 出 現 如 第 4 行 Permission denied 需 要 特 別 注 意 的 是 shell 執 行 一 個 命 令 時, 會 到 環 境 變 數 $PATH 指 定 的 目 錄 搜 尋 是 否 有 此 可 執 行 檔, 若 目 前 工 作 目 錄 不 在 搜 尋 範 圍 內, 直 接 下 指 令 也 無 法 執 行 因 此, 必 須 如 第 5 行 以 直 接 以 絕 對 路 徑 指 出 要 執 行 的 腳 本 2.3 題 目 設 計 本 系 統 題 目 以 隨 機 選 提 的 方 式 設 計, 而 設 計 的 目 的 是 在 提 升 學 生 們 對 Linux 系 統 的 了 解 以 及 Shell 腳 本 的 基 礎 練 習, 從 增 加 使 用 者 目 錄 的 權 限 尋 找 檔 案 時 間 的 設 定 打 包 和 $bash hello.sh 2 $sh hello.sh $./hello.sh 4 bash:./hello.sh: Permission denied $sh /home/dywang/hello.sh 6 $chmod +x hello.sh 程 式 2: Shell script 範 例 執 行 壓 縮 基 本 的 架 站 和 對 硬 碟 的 了 解, 到 基 礎 的 Shell 腳 本 練 習 都 旨 在 測 驗 學 生 們 是 否 對 Linux 系 統 有 基 本 的 認 識 及 了 解 這 些 題 目 可 以 從 用 戶 端 觀 看, 而 每 個 用 戶 端 所 看 到 的 題 目 都 不 盡 相 同, 其 主 要 的 設 計 是 以 超 文 件 標 示 語 言 ( HyperText Markup Language, HTML )[17] 的 方 式 來 撰 寫, 以 簡 易 的 方 式 把 題 目 完 整 的 呈 現 出 來 而 HTML 是 為 網 頁 建 立 和 其 它 可 在 網 頁 瀏 覽 器 中 也 看 到 的 訊 息 設 計 的 一 種 標 示 語 言, 它 也 被 用 來 結 構 化 訊 息 例 如 標 題 段 落 和 列 表 等 等, 也 可 用 來 在 一 定 程 度 上 描 述 文 件 的 外 觀 和 語 意 HTML 有 一 個 固 定 格 式, 瀏 覽 器 才 可 以 辨 識 及 分 析, 而 基 本 格 式 為 程 式 3, 而 為 結 果 展 示 如 圖 1 所 示 其 中 第 4 行 為 標 題 文 字 ; 第 5 行 旨 在 加 一 條 水 平 線 來 區 分 標 題 文 字 和 顯 示 的 內 容, 而 size 為 控 制 線 的 寬 度 align 為 讓 線 靠 左 ( left )/ 靠 右 ( right )/ 中 間 ( center ) width 為 線 的 長 度 ; 第 6 行 是 讓 顯 示 內 容 的 開 頭 變 成 清 單 的 方 式 ; 第 7 行 為 主 要 的 顯 示 內 容, 還 可 以 改 變 它 的 字 的 顏 色 及 大 小 或 者 粗 體 還 是 細 體
<html> 2 <head><title>test</title></head> <body> 4 <h1> 測 試 測 試 </h1> <hr size="1" align="left" noshade width="100%" color="000000"> 6 <ul> <li><font color="ff0000"><b>hello</b ></font> word!!<p> 8 </ul> </body> 10 </html> 程 式 3: html 程 式 範 例 $yum install dhcpd 2 $yum install vsftpd $yum install tftp-server 程 式 4: 安 裝 伺 服 器 服 務 1 IPADDR=192.168.111.254 NETMASK=255.255.255.0 3 GATEWAY=192.168.111.1 DNS=192.168.111.70 程 式 8: PXE 網 路 設 定 3 系 統 實 作 圖 1: html 執 行 結 果 本 章 節 主 要 是 在 介 紹 整 個 系 統 的 實 作, 以 PXE KVM 虛 擬 機 和 Shell 腳 本 中 各 個 的 設 定 和 如 何 使 用 以 及 操 作 與 撰 寫 的 方 式 將 整 個 系 統 完 整 的 一 一 呈 現 3.1 PXE 設 定 要 使 用 PXE 伺 服 器 必 須 要 先 有 DHCP TFTP xinetd 的 服 務, 如 沒 有 其 中 一 個 服 務 需 要 使 用 yum 或 rpm 來 安 裝 如 程 式 4, 然 後 編 輯 DHCP 設 定 檔 /etc/dhcp/dhcpd.conf 如 程 式 5 主 要 是 修 改 為 伺 服 器 的 網 路, 再 編 輯 TFTP 設 定 檔 /etc/xinetd.d/tftp 如 程 式 6, 還 需 要 建 立 PXE 開 機 設 定 檔 如 程 式 7, 而 在 這 假 設 網 路 IP 如 程 式 8, 必 須 要 與 DHCP 設 定 檔 和 PXE 開 機 設 定 檔 一 致, 最 後 再 啟 動 服 務 和 設 定 開 機 啟 動 如 程 式 9, 就 可 以 使 用 PXE 將 其 他 電 腦 安 裝 成 用 戶 端 練 習 與 測 驗 的 系 統 DHCP 設 定 檔 的 第 7 行 是 用 來 指 定 動 態 DNS ( Dynamic DNS, ddns ) 的 更 新 類 型, 而 設 定 成 none 是 指 不 需 要 這 個 功 能, 在 設 定 檔 中 有 些 參 數 需 使 用 option 去 做 宣 告, 所 以 第 8 行 宣 告 一 個 空 間 為 PXE, 而 從 第 12 行 至 20 行 產 生 Class PXE 來 提 供 pxe client 適 當 的 訊 息, 設 定 dhcp client 的 識 別 碼 ( identifier ) 為 PXEClient, 還 可 以 允 許 自 定 義 的 選 項 和 指 定 boot loader 與 tftp server 的 名 稱 第 10 行 使 用 subnet 及 netmask 來 宣 告 子 網 路 提 供 服 務, 從 第 24 行 開 始 在 設 定 參 數 有 路 由 器 的 IP 網 域 名 稱 DNS 的 IP 設 定 還 有 租 約 期 限 的 設 定, 租 約 期 限 到 期 可 續 租, 但 為 了 防 止 過 量 可 設 定 最 大 租 約 期 限 第 31 行 至 41 行 在 指 定 不 同 的 伺 服 器 端 來 使 用 不 同 的 IP 範 圍 及 不 同 的 設 定 最 後 需 要 有 kickstart 檔 案 的 位 置, 才 能 安 裝 成 用 戶 端 的 系 統 3.2 PXE 安 裝 在 PXE 安 裝 前 需 要 先 啟 動 各 個 服 務 和 關 閉 防 火 牆 與 selinux 服 務 如 程 式 10, 再 安 裝 成 用 戶 端 所 要 的 系 統 環 境 首 先 用 戶 端 的 電 腦 必 須 先 要 選 擇 網 路 開 機 的 選 項 如 圖 2, 因 安 裝 前 需 要 利 用 區 域 網 路 搜 尋 後 並 連 到 伺 服 器 端, 而 伺 服 器 端 就 會 依 照 PXE 設 定 檔 的 需 求 來 安 裝 系 統, 然 後 就 會 開 始 自 動 的 安 裝 系 統 環 境 首 先 它 會 先 尋 找 伺 服 器 端 的 Kickstart 檔 後, 就 開 始 依 照 Kickstart 檔 的 內 容 來 自 動 的 設 定 語 系 鍵 盤 滑 鼠 網 路 密 碼 地 區 等 設 定, 再 建 立 分 割 磁 區 並 格 式 化 之 後 就 會 開 始 安 裝 程 序, 而 圖 3 是 依 照 Kickstart 檔 的 設 定 來 選 擇 安 裝 使 用 者 所 需 要 的 套 件, 結 束 後 便 會 自 動 的 重 新 啟 動 安 裝 完 後 會 在 依 照 Kickstart $/etc/init.d/dhcpd restart 2 $/etc/init.d/xinetd restart $chkconfig dhcpd on 4 $chkconfig xinetd on $chkconfig tftp on 程 式 9: 啟 動 服 務 及 開 機 啟 動
1 # # DHCP Server Configuration file. 3 # see /usr/share/doc/dhcp*/dhcpd.conf.sample # see man 5 dhcpd.conf 5 # 7 ddns-update-style none; option space PXE; 9 11 subnet 192.168.111.0 netmask 255.255.255.0 { class "PXE" { 13 match if substring(option vendor-class-identifier, 0, 9) = "PXEClient"; option vendor-encapsulated-options 01:04:00:00:00:00:ff; 15 option boot-size 0x1; filename "pxelinux.0"; 17 option tftp-server-name "deyu.wang"; option vendor-class-identifier "PXEClient"; 19 vendor-option-space PXE; } 21 23 # The following lines are standard all of the time. option routers 192.168.111.254; 25 option subnet-mask 255.255.255.0; option domain-name "deyu.wang"; 27 option domain-name-servers 168.95.1.1,139.175.10.20; default-lease-time 21600; 29 max-lease-time 43200; 31 # Assign IPs 101-200 to PXE clients pool { 33 allow members of "PXE"; default-lease-time 120; 35 max-lease-time 180; range 192.168.111.101 192.168.111.200; 37 } pool { 39 deny members of "PXE"; range 192.168.111.1 192.168.111.70; 41 } 43 # The following lines are examples of kickstart directives. # filename "/kickstart/workstation.cfg"; 45 next-server 192.168.111.254; filename "ftp://192.168.111.254/pub/centos6/add/crt-ks.cfg"; 47 # filename "ftp://192.168.111.254/pub/centos6/add/dyw-ks.cfg"; } 程 式 5: DHCP 設 定 檔
# default: off 2 # description: The tftp server serves files using the trivial file transfer \ # protocol. The tftp protocol is often used to boot diskless \ 4 # workstations, download configuration files to network-aware printers, \ # and to start the installation process for some operating systems. 6 service tftp { 8 disable = no socket_type = dgram 10 protocol = udp wait = yes 12 user = root server = /usr/sbin/in.tftpd 14 server_args = -s /var/ftp/pub/centos6/isolinux/ per_source = 11 16 cps = 100 2 18 } flags = IPv4 程 式 6: TFTP 設 定 檔 label crt 2 menu label Install ^Certification USB system menu default 4 kernel vmlinuz append vga=normal load_ramdisk=1 initrd=initrd.img network \ 6 ks=ftp://192.168.111.254/pub/centos6/add/crt-ks.cfg \ repo=ftp://192.168.111.254/pub/centos6/ noipv6 程 式 7: PXE 開 機 設 定 檔
2014 第八屆資訊科技國際研討會 $/etc/init.d/iptables stop $/etc/init.d/dnsmasq stop $/etc/init.d/libvirtd stop $setenforce 0 $/etc/init.d/dhcpd restart $/etc/init.d/xinetd restart 看 之後再把檢測用的腳本傳送到用戶端 會 將用戶端的題目逐一做檢測評分並紀錄結果 在傳送檢測用的腳本時由 read 來作互動的指 3 令讓 root 的密碼做手動輸入如 read -p "輸 5 入密碼:" -s passwd 而要檢測的 IP 也是要手 動輸入 需要加在執行檢測腳本時的後面如 sh 檢測的腳本名稱.sh IP 程式 10: 關閉以及啟動服務 檢測的腳本每一題都是用 function 來區分 如程式 12 第 2 行至第 10 行是將要做檢測 的地方暫存到各個變數中 再執行第 11 行它 會執行 sh1 這個 function sh1 它是用來比 對暫存到的變數是否跟題目所規定是一致的 兩者相比較一樣的話會輸出 echo "答案: 正確" 並在正確題數加 1 反之 錯誤的話會在錯 誤題數加 1 而檢測第三題都方式不同於第一 題 如果執行正確的話 會把輸出正確的訊息 丟棄 而錯誤的訊息會累加到 /tmp/num 這 樣方便之後用戶端可以檢查錯誤的地方 第 26 行 echo $? > /tmp/a 是指前一個指令正確輸出 的話就輸出 0 錯誤的話就會輸出非 0 的數並 暫存到 /tmp/a 之後來比對變數 如果比對數 值相同的話會在正確題數加 1 反之 不一樣 圖 2: 選擇網路開機 的話會在錯誤的題數上加 1 如程式 13 最後 會總和所檢測的題目 第 19 行會將結果顯示 在螢幕上並輸出累加到 /tmp/num 檔的後續設定 將題目連結傳送到各個用戶端 的桌面 讓用戶端們可以方便的練習與測驗 1 4 圖 3: 安裝套件中 3.3 shell 腳 本 首先腳本主要分為兩個部分 第一個是先 隨機亂數題目後 將亂數的題目和檢測的腳本 先後分別傳到用戶端之腳本 第二個是檢測題 目和評分與統計結果的腳本 隨機亂數出題的 腳本如程式 11 它會先從題庫中的題目隨機 產生五題出來後 再將這五個題目傳送至用戶 端 用戶端就可以直接點擊桌面的題目就可觀 結果與討論 當用戶端們練習或測驗完後 由伺服器端 開始執行評分檢測的腳本 sh rhcsa.sh 用戶端 們的IP 首先需要輸入用戶端們的密碼才能登 入到他們的電腦 接著腳本就會開始自動的評 分用戶端們所做題目是否正確 當用戶端回答 正確的話 就會在顯示結果的正確題目數加上 1 但回答錯誤的話會在錯誤的題目數加上 1 而在檢測的過程中如果用戶端的回答有錯誤 的話 就會將有錯誤的地方顯示在螢幕上可以 讓用戶端觀看 最後腳本會將結果統計出來並 顯示在螢幕上 然後再把最後結果回傳至伺服 器端做紀錄 在這裡分別以 IP 編號 122 和 171 這兩台 電腦做兩次檢測 在第一次檢測時 IP 為 122 的用戶端作答完全正確 所以正確題數有五 題 而 IP 為 171 的用戶端第六題作答錯誤 所以會在錯誤題數加上 1 並會顯示錯誤的地 方 如圖 4他錯誤的是因為沒有安裝 httpd 而 導致錯誤 經過第二次作答後再做檢測 他們 的題目跟上一次有所不同 IP 為 122 的用戶 端作答還是完全正確 但 IP 為 171 的用戶端 換成第七題作答錯誤 這次是因為 vsftpd 沒有 安裝所導致錯誤如圖 5
function random1(){ 2 touch aaa while [ sort aaa uniq wc -l!= 5 ] 4 do echo expr $RANDOM % 10 + 1 >> aaa 6 done sort -nr aaa uniq > random 8 rm -f aaa } 10 random1 a= sed -n 1,5p random 程 式 11: 隨 機 亂 數 題 目 之 shell 腳 本 function ex1(){ 2 a=$(cat /etc/group grep cyutcsiem415 awk BEGIN {FS=":"} {print $3} ) b=$(cat /etc/passwd grep mianmian awk BEGIN {FS=":"} {print $5} ) 4 c=$(cat /etc/passwd grep node awk BEGIN {FS=":"} {print $4} ) d=$(cat /etc/passwd grep tob awk BEGIN {FS=":"} {print $7} ) 6 e=$(cat /etc/passwd grep yoyoming awk BEGIN {FS=":"} {print $3} ) for user in mianmian node tob yoyoming 8 do f=$(cat /etc/shadow grep $user awk BEGIN {FS=":"} {print $8} ) 10 done sh1 12 } function sh1(){ 14 if [ $a -ne 52 ] && [ $b!= "csiem415" ] && [ $c!= "cyutcsiem415" ] && [ $d!= " /sbin/nologin" ] && [ $e -ne 10027 ] && [ $f -ne 16436 ]; then echo " 答 案 : 錯 誤 " 16 j=$(($j+1)) else 18 echo " 答 案 : 正 確 " i=$(($i+1)) 20 fi rm -f? 22 } function ex3(){ 24 ls -la /csiem415/ccc/ 1>/dev/null 2>>/tmp/num cat /csiem415/ddd 1>/dev/null 2>>/tmp/num 26 echo $? > /tmp/a } 程 式 12: 測 驗 虛 擬 機 的 題 目 之 shell 腳 本
1 function test(){ cat /tmp/a 3 } i=0 5 j=0 function test1(){ 7 if [ test == "0" ]; then echo " 答 案 : 正 確 " 9 i=$(($i+1)) else 11 echo " 答 案 : 錯 誤 " j=$(($j+1)) 13 fi } 15 function sum(){ echo " 正 確 :"$i " 錯 誤 ;: "$j 17 } sum tee -a /tmp/num 程 式 13: 比 對 輸 出 結 果 並 總 和 輸 出 圖 4: 第 一 次 做 檢 測 圖 5: 第 二 次 做 檢 測
5 結論 [7] 鳥哥. 鳥哥的 Linux 私房菜 基礎學習篇. 碁峰, 3rd edition, 2007. 現在的資訊科技發展相當快速 從以前的 考試只有紙跟筆的時代開始 發展到現今都 使用電腦來作答 但大多電腦作答都還是以選 擇題的方式進行 並沒有以實機的電腦操作 以 Linux 來說 想學好它並不是簡單的知識作 答就可以做的到 需要時常的實際操作電腦才 能夠達成 而目前雖然有相關 shell 腳本題目 的評分檢測 但都是評分全部題目的腳本 卻 沒有專門為了因應隨機選題而檢測的腳本 因 此 本研究主要以實機操作的方式來撰寫 shell 腳本 針對使用隨機亂數的方式選出題目 再將隨機選出來的題目傳送給用戶端 讓用戶 端可以實機的操作練習或測驗 最後再逐一做 檢測並紀錄結果 而這樣隨機出題的方式是為 了在測驗的時候可以達到相當的公平性 能讓 用戶端都能每次的練習不同題目 也為了避免 用戶端在測驗的時候死記題型或作弊的情形發 生 [8] 陳奕靜. 使用 shell 腳本自動處理 latex 文 稿之設計. Master s thesis, 朝陽科技大學, 2012. [9] Linux distribution. http:// en.wikipedia.org/wiki/linux_ distribution. [10] Linux file server. http://ftp.isu.edu. tw/linux. [11] Pxe. http://en.wikipedia.org/wiki/ Preboot_Execution_Environment. [12] Centos home page. http://www.centos. org. [13] Kickstart. https://access.redhat. com/site/documentation/zh-tw/ Red_Hat_Enterprise_Linux/6/html/ 本研究可以讓使用者充分的練習與學習 Installation_Guide/. 讓他們可以更了解 Linux 系統 從管理使用 者帳號到架設網站與撰寫 shell 腳本都能訓練 使用者基礎的能力 因此本研究不但可以加強 [14] Shell script 程 式 設 計 for linux. http://itsoho.miroko.tw/ 學生實機操作的能力 也可教導學生們正確的 Tutorial/Linux/programming/Shell% 學習態度與方式 而題目是以簡單的 html 設 20ScriptTutPart1.htm. 計 可以相當便利的新增與修改題目 在未來 可以再新增新的題目 也可以再新增更進階的 [15] 王俊斌. FreeBSD 6.0架設管理與應用. 博 題目 這樣可以增加隨機出題的題數 讓使用 碩文化, 2005. 者能多方面的練習與測驗 [16] 江俊龍. Linux程式設計教學手冊. 碁峰, 台 灣, 4rd edition, 2008. 參考文獻 [1] 數 位 學 習. http://en.wikipedia.org/ wiki/e-learning. [17] 陳錦輝. HTML初學指引. 上奇資訊, 台北 市, 2008. [2] 數位學習-數位典藏學習網. http://ic. shu.edu.tw/da/dadl/1-5-2.html. [3] 黃國禎 蘇俊銘 陳年興. 數位學習導論 與實務. 博碩, 台灣, 2012. [4] 考 試 院. http://www.exam.gov.tw/mp. asp?mp=1. [5] 考試. http://en.wikipedia.org/wiki/ Exam. [6] unix-like-os. http://chris959. blogspot.tw/2012/03/unix-like-os. html. 10