---
# System prepended metadata

title: 專題
tags: [informatics]

---

###### tags: `專題`
# 專題


### <mark>MRTG</mark>
* SNMP（Simple Network Management Protocol，簡易網路管理協定）是目前網路上用來進行網路管理的通訊協定，最主要的目的在於管理網路上各式各樣的設備。

* SNMP主要分為管理端（Manager）、代理者（Agent）以及管理資訊庫（Management Information Base，MIB）三個元件
    * 管理端（Manager）通常被稱為網路管理工作站（Network Management Station，NMS）。利用SNMP通訊協定向代理者（Agent）查詢所需的相關資訊，如網路設備運作狀態、系統硬體的配置（如CPU使用率、硬碟利用率）等。管理者取得此類資訊後，即可進行統計分析，並且利用相關工具進行處理，繪出簡單易懂的統計圖表供使用者瀏覽。
    * 代理者代理者（Agent）通常是一個執行程式（通常運作在被監控的設備上），負責讀取被監控設備上的相關資訊，而後接收到管理端所發出的SNMP Get-request、Get-next-request等查詢指令時，再將相關資訊回傳至管理端。除了資料回傳的機制外，代理者也提供主動回報的機制（Trap），在符合條件的情況下（如系統發生錯誤或關機等特殊的情況）主動地以Trap的方式發送訊息通知管理端。
    * SNMP定義了網管資訊庫（簡稱為MIB），利用階層性的描述，說明所有受管理設備資訊的屬性，並將這些設備稱為SNMP物件（Object）。


0. <font color=blue>virtualbox設定為橋接模式</font>
    ```=
    裝置>網路>網路設定>改為: 橋接介面卡>進階混和模式(全部允許)
    ```
0. <font color=blue>修改系統時間</font>
    ```=
    sudo timedatectl set-timezone Asia/Taipei
    timedatectl
    ```
1. <font color=blue>安裝所需套件</font>
    ```=
     apt install snmp snmpd apache2 mrtg  net-tools -y
     ```

2. <font color=blue>編輯 `/etc/snmp/snmpd.conf`檔案 </font>
    ```=
    # rocommunity  public default -V systemonly     //註解掉
    # rocommunity6 public default -V systemonly     //註解掉
    rocommunity  public localhost                  //不能有systemonly，那個是唯獨
    rocommunity6  public localhost 
    ```
3. <font color=blue>輸入以下指令重啟snmpd服務，並測試SNMPWALK是否正常運作。</font>
    ```=
    sudo service snmpd restart
    sudo snmpwalk localhost -c public -v 1
    sudo snmpwalk localhost -c public -v 2c
    ```
4. <font color=blue>創建MRTG所需設定檔並輸出。創建MRTG之index檔並輸出。若有參數不同，需要修改</font>
    ```=
    sudo cfgmaker --output=/etc/mrtg.cfg public@127.0.0.1
    sudo indexmaker --output=/var/www/html/mrtg/index.html /etc/mrtg.cfg
    ```
5. <font color=blue>新增crontab，使MRTG自動每5分鐘進行更新。</font>
    ```=
    crontab -e 
    */5 * * * * env LANG=C /usr/bin/mrtg /etc/mrtg.cfg
    ```
6. <font color=blue>開啟`/var/www/html/mrtg`目錄中的網頁檔即可觀察視覺化的流量</font>
    * or 瀏覽器打開`http://127.0.0.1/mrtg/`
    * ![image](https://hackmd.io/_uploads/BJdEoxEYp.png)


### <mark>安裝與編譯其他程式</mark>
* 安裝gcc , libs
    ```=
    //ubuntu_2
    sudo apt install gcc
    apt install libpcap-dev libpthread-stubs0-dev libsqlite3-dev
    make
    ```
* python 虛擬環境
    ```=
    sudo apt install python3-venv -y 
    
    //創建一個新的目錄，進入該目錄
    mkdir my_project && cd my_project
    
    //創建虛擬環境。使用以下命令，其中 venv 是虛擬環境的名稱，你可以替換為你喜歡的名稱：
    python3 -m venv venv
    
    //啟動虛擬環境
    source venv/bin/activate
    ```
    ![image](https://hackmd.io/_uploads/SycD5SBYa.png)
    
* 將專案所用到的套件紀錄並匯出
    ```=
    pip freeze > requirements.txt
    
    //將來可以直接重新下載，移植更方便
    pip install -r requirements.txt

    ```






