學習案例:首次登入的系統巡檢任務 (V2.0 增強版)

 # 學習案例:首次登入的系統巡檢任務 (V2.0 增強版)


## 情境介紹 (The Core Problem)

您是一位新上任的系統管理員,今天第一次登入公司的一台重要伺服器。您的首要任務不是修改任何東西,而是進行一次**非侵入式的系統巡檢**,全面了解這台主機的作業系統版本、帳號與網路配置、以及當前的運行狀態,並將結果彙整成一份結構化的報告。


## 你的任務是:

1.  在你的家目錄下,建立一個用於存放本次巡檢報告的工作區。

2.  全面收集系統的**版本、帳號、網路、磁碟、登入及程序**等核心資訊。

3.  將收集到的原始數據,分門別類地儲存到一份報告檔案中。

4.  分析這份報告檔案,從中過濾並找出關鍵資訊。

5.  完成報告後,整理工作區。


---


### 階段一:【建立工作區】為你的任務做好準備


* **問題:** 在開始收集資訊前,我需要一個乾淨的地方來存放我的報告。

* **操作與解說:**

    ```bash

    # 確認當前位置

    pwd


    # 建立名為 system_check 的資料夾

    mkdir system_check


    # 進入該資料夾

    cd system_check


    # 建立一個名為 report.txt 的空白報告檔

    touch report.txt


    # 確認工作區與檔案已就緒

    ls -l

    ```

    * **階段成果:** 您已成功建立 `~/system_check/` 工作區及 `report.txt` 報告檔。


---


### 階段二:【數據採集】將系統狀態輸出到報告中


* **問題:** 如何依序執行一系列檢查指令,並將它們的結果有條理地全部存入 `report.txt` 中?

* **操作與解說:** 我們將使用 `>` (覆蓋) 來寫入第一筆資料,然後統一使用 `>>` (附加) 來新增後續所有資訊區塊。


    ```bash

    # 1. 收集作業系統版本資訊 (使用 > 覆蓋寫入)

    echo "--- OS Version ---" > report.txt

    lsb_release -a >> report.txt


    # 2. 收集網路組態資訊

    echo -e "\n--- Network Configuration: IP Address ---" >> report.txt

    ip a >> report.txt


    echo -e "\n--- Network Configuration: Routing ---" >> report.txt

    ip route >> report.txt


    echo -e "\n--- Network Configuration: DNS ---" >> report.txt

    resolvectl status >> report.txt


    # 3. 收集系統帳號與群組資訊

    echo -e "\n--- System Accounts ---" >> report.txt

    cat /etc/passwd >> report.txt


    echo -e "\n--- System Groups ---" >> report.txt

    cat /etc/group >> report.txt


    # 4. 收集當前系統狀態

    echo -e "\n--- Disk Usage ---" >> report.txt

    df -h >> report.txt


    echo -e "\n--- Recent Logins ---" >> report.txt

    last -n 20 >> report.txt


    echo -e "\n--- Running Processes ---" >> report.txt

    ps aux >> report.txt

    ```

    * `echo -e "\n..."` 指令會在每個區塊前插入一個空行和標題,讓報告更易讀。

    * **階段成果:** `report.txt` 已成為一份包含作業系統、網路、帳號、磁碟、登入、程序等六大類資訊的全面系統快照。


---


### 階段三:【情報分析】從原始數據中過濾關鍵資訊


* **問題:** `report.txt` 檔案內容豐富但龐雜,如何從中快速找到我需要的特定答案?

* **操作與解說:** 我們將使用 `less` 進行瀏覽,並用 `grep` 進行精準過濾。


    1.  **瀏覽報告全貌:**

        ```bash

        less report.txt

        ```

        * 使用方向鍵瀏覽,按 `q` 退出。


    2.  **分析特定問題:**


        * **Q1: 這台主機的 Ubuntu 版本確切是什麼?**

            ```bash

            grep "Description" report.txt

            ```

            * `grep` 會從報告中找出含有 `Description` 的那一行,直接告訴您系統版本。


        * **Q2: 這台主機的 IP 位址、預設閘道器和 DNS 伺服器各是什麼?**

            ```bash

            # 搜尋 inet 關鍵字來找 IP (排除 127.0.0.1)

            grep "inet " report.txt | grep -v "127.0.0.1"


            # 搜尋 default via 來找閘道器

            grep "default via" report.txt


            # 搜尋 DNS Servers 來找 DNS

            grep "DNS Servers" report.txt

            ```


        * **Q3: 系統上有哪些「真人」使用者帳號? (通常家目錄在 /home 底下)**

            ```bash

            grep "/home/" report.txt

            ```

            * 此操作會篩選 `/etc/passwd` 區塊中,所有家目錄設定在 `/home/` 下的使用者。


        * **Q4: `sudo` 這個重要的管理群組裡,有哪些成員?**

            ```bash

        grep "sudo" report.txt

            ```

            * 此操作會篩選 `/etc/group` 區塊中,`sudo` 群組的那一行,結尾處即為成員列表。


        * **Q5: SSH 服務 (`sshd`) 是否正在運行?**

            ```bash

            grep "sshd" report.txt

            ```

            * 此操作會篩選 `ps aux` 區塊中,關於 `sshd` 服務的程序資訊。


    * **階段成果:** 您已學會如何從一份綜合報告中,透過關鍵字搜尋,快速定位並回答關於系統配置與狀態的具體問題。


---


### 階段四:【收尾整理】


* **問題:** 任務完成,如何歸檔報告並清理工作區?

* **操作與解說:**

    ```bash

    # 將報告重新命名為包含今日期的檔案,例如:2025-10-02_report.txt

    mv report.txt $(date +%F)_report.txt


    # 將完成的報告移動到家目錄

    mv *.txt ..


    # 回到家目錄

    cd ..


    # **警告:執行前請確認路徑!** 刪除已清空的工作目錄

    rm -r system_check/

    ```

    * `$(date +%F)` 是一個 Shell 技巧,會自動代入今天的日期 (格式為 YYYY-MM-DD)。


### **任務總結**

恭喜!您已完成一次專業級的系統巡檢。您不僅掌握了 Linux 基礎操作,更學會了如何利用系統內建指令,結合**重導向 (`>` `>>`)** 和**管道 (`|`)** 等強大功能,進行系統化的**數據收集**與**情報分析**。這是每一位系統管理員都必須精通的核心技能。

留言

這個網誌中的熱門文章

Linux 下使用終端機連接 switch (minicom)

VMWARE VM linux 擴充硬碟空間

透過 curl 的 timeout 設定識別 http 的網路連線壅塞問題