2026年5月6日 星期三

Ubuntu 24.04 + SmokePing 校園戰情室

剛好在社群軟體上看到了黑暗執行續的這篇文章-24 小時網路品質監控 - SmokePing
https://blog.darkthread.net/blog/smokeping/
又遇到校內同事遇到網路無法連線,但又不知道問題在哪邊,就興起了安裝 SmokePing測試看看的念頭。

 

🚀 一、安裝 SmokePing

更新系統

sudo apt update && sudo apt upgrade -y

安裝 SmokePing

sudo apt install smokeping apache2 fping -y

啟用 Apache CGI

sudo a2enmod cgid
sudo systemctl restart apache2

🚀 二、建立 SmokePing Targets

編輯 Targets

sudo nano /etc/smokeping/config.d/Targets

可公開分享版 Targets

*** Targets ***

probe = FPing

menu = Top
title = 校園教學戰情室
remark = 老師也看得懂的網路狀態系統

# =========================
# DNS
# =========================
+ DNS
menu = DNS
title = DNS服務

++ Google_DNS
menu = Google DNS
title = Google DNS
host = 8.8.8.8

++ Cloudflare_DNS
menu = Cloudflare DNS
title = Cloudflare DNS
host = 1.1.1.1

# =========================
# 校內核心
# =========================
+ LAN
menu = 校內網路
title = 校內設備

++ Gateway
menu = 校內閘道
title = 校內閘道
host = 192.168.1.1

++ NAS01
menu = NAS01
title = NAS01
host = 192.168.1.10

++ School_Cloud
menu = 校內雲端
title = 校內雲端
host = 192.168.1.20

# =========================
# 對外網路
# =========================
+ Internet_Check
menu = 對外連線
title = 對外網路

++ ISP_01
menu = ISP節點1
title = ISP節點1
host = 168.95.1.1

++ ISP_02
menu = ISP節點2
title = ISP節點2
host = 168.95.192.1

++ Google_Endpoint
menu = Google Endpoint
title = Google Endpoint
host = 142.250.204.35

# =========================
# 教學平台
# =========================
+ Teaching
menu = 教學服務
title = 教學平台

++ Google
menu = Google
title = Google 搜尋
host = www.google.com

++ YouTube
menu = YouTube
title = YouTube
host = www.youtube.com

++ Wordwall
menu = Wordwall
title = Wordwall
host = wordwall.net

++ LINE
menu = LINE
title = LINE
host = line.me

# =========================
# 行政平台
# =========================
+ Admin_Service
menu = 行政服務
title = 行政系統服務

++ ODIS
menu = 公文系統
title = 公文系統 ODIS
host = odis.tycg.gov.tw

++ CloudHR
menu = 差勤系統
title = 差勤系統 CloudHR
host = tycg.cloudhr.tw

🚀 三、重新啟動 SmokePing

sudo systemctl restart smokeping

🚀 四、建立 Warroom 網頁資料夾

sudo mkdir -p /var/www/html/warroom

🚀 五、建立 Python 戰情室

建立設定資料夾

sudo mkdir -p /opt/warroom

🚀 六、建立 targets.conf

sudo nano /opt/warroom/targets.conf

可公開分享版 targets.conf

[DNS]
Google DNS|8.8.8.8|ping
Cloudflare DNS|1.1.1.1|ping

[LAN]
校內閘道|192.168.1.1|ping
NAS01|192.168.1.10|ping
校內雲端|192.168.1.20|ping

[Internet_Check]
ISP節點1|168.95.1.1|ping
ISP節點2|168.95.192.1|ping
Google Endpoint|142.250.204.35|ping

[Teaching]
Google 搜尋|https://www.google.com|http
YouTube 影片|https://www.youtube.com|http
Wordwall|https://wordwall.net|http
LINE 連線|https://line.me|http

[Admin]
公文系統 ODIS|https://odis.tycg.gov.tw/|http
差勤系統 CloudHR|tycg.cloudhr.tw|ping

🚀 七、建立 update_warroom.py

sudo nano /opt/warroom/update_warroom.py

貼入完整 Python 程式(上一篇完整版)。


🚀 八、執行輸出

sudo chmod +x /opt/warroom/update_warroom.py
sudo /opt/warroom/update_warroom.py

🚀 九、自動更新

crontab -e

加入:

*/5 * * * * /usr/bin/python3 /opt/warroom/update_warroom.py

🚀 十、HTTPS 憑證

安裝 Certbot

sudo apt install certbot python3-certbot-apache -y

申請 HTTPS

sudo certbot --apache

🚀 十一、XOOPS 嵌入版

SVG 顯示版(推薦)

<img
src="https://你的主機/warroom/status.svg"
style="width:100%;display:block;border-radius:8px;"
alt="校園網路狀態">

<div style="font-size:12px;color:#d9534f;margin-top:4px;">
⚠ 若畫面空白,請先點
<a href="https://你的主機/warroom/status.svg" target="_blank">
【允許安全憑證】
</a>
</div>

🚀 十二、系統輸出

系統會自動輸出:

/var/www/html/warroom/index.html
/var/www/html/warroom/widget.html
/var/www/html/warroom/status.svg
/var/www/html/warroom/status.txt

🎯 AI 判讀邏輯

DNS 區異常

名稱解析異常

校內區異常

校內網路問題

ISP 區異常

教育網/ISP 異常

教學平台異常

外部教學平台問題

行政平台異常

行政系統平台異常

















 

 

2026年4月16日 星期四

網管命令-一鍵網路健檢_老師版

1. 開啟記事本->貼上以下這段程式碼

2.另存新檔->檔案名稱->一鍵網路健檢_老師版.bat

3.存檔類型->


程式碼

@echo off
setlocal EnableExtensions EnableDelayedExpansion
chcp 65001 >nul
title 一鍵網路健檢(老師版 v2)

set "NODE_IP=10.255.4.1"
set "TEST_DOMAIN=www.google.com"
set "TEST_DNS=8.8.8.8"
set "TEST_IP=8.8.8.8"

set "OK=✅"
set "WARN=⚠️"
set "BAD=❌"

goto :MAIN

:PINGCHECK
set "PING_OK=0"
ping -n 2 -w 800 %~1 >nul 2>nul
if %errorlevel%==0 set "PING_OK=1"
exit /b

:HTTPCHECK
set "HTTP_OK=0"
powershell -NoProfile -ExecutionPolicy Bypass -Command ^
"try { $r=Invoke-WebRequest -Uri 'https://www.google.com' -UseBasicParsing -TimeoutSec 8; if($r.StatusCode -ge 200 -and $r.StatusCode -lt 400){ exit 0 } else { exit 2 } } catch { exit 1 }" >nul 2>nul
if %errorlevel%==0 set "HTTP_OK=1"
exit /b

:DNSCHECK
set "DNS_OK=0"
for /f "delims=" %%A in ('nslookup %TEST_DOMAIN% %TEST_DNS% 2^>nul ^| findstr /i /c:"Name:" /c:"Addresses:" /c:"Address:"') do (
  set "DNS_OK=1"
)
exit /b

:MAIN
cls
echo ===============================================
echo   一鍵網路健檢(老師版 v2)
echo   只要看 RESULT 結論就可以
echo ===============================================
echo  時間:%date% %time%
echo  校內節點:%NODE_IP%
echo ===============================================
echo(

set "IPV4="
set "GW="

for /f "tokens=2 delims=:" %%A in ('ipconfig ^| findstr /i "IPv4"') do (
  if not defined IPV4 (
    for /f "tokens=* delims= " %%B in ("%%A") do set "IPV4=%%B"
  )
)
for /f "tokens=2 delims=:" %%A in ('ipconfig ^| findstr /i "Default Gateway"') do (
  if not defined GW (
    for /f "tokens=* delims= " %%B in ("%%A") do set "GW=%%B"
  )
)

echo 【A. 本機資訊】
if defined IPV4 (
  echo   %OK% 本機 IPv4:%IPV4%
) else (
  echo   %BAD% 未取得 IPv4
)
if defined GW (
  echo   %OK% 預設閘道:%GW%
) else (
  echo   %BAD% 未取得預設閘道
)
echo(

echo 【B. 校內網路】
if defined GW (
  call :PINGCHECK %GW%
  if "!PING_OK!"=="1" (
    echo   %OK% 可連到校內閘道
    set "GW_OK=1"
  ) else (
    echo   %BAD% 無法連到校內閘道
    set "GW_OK=0"
  )
) else (
  echo   %BAD% 略過檢查(因為沒有閘道)
  set "GW_OK=0"
)
echo(

echo 【C. 校內節點 %NODE_IP%
call :PINGCHECK %NODE_IP%
if "!PING_OK!"=="1" (
  echo   %OK% 節點有回應
  set "NODE_OK=1"
) else (
  echo   %WARN% 節點無回應
  set "NODE_OK=0"
)
echo(

echo 【D. DNS(Google DNS 8.8.8.8)】
if not defined IPV4 (
  echo   %BAD% 略過檢查(因為未取得 IPv4)
  set "DNSR_OK=0"
) else if not defined GW (
  echo   %BAD% 略過檢查(因為未取得閘道)
  set "DNSR_OK=0"
) else (
  call :DNSCHECK
  if "!DNS_OK!"=="1" (
    echo   %OK% 可透過 Google DNS 解析 %TEST_DOMAIN%
    set "DNSR_OK=1"
  ) else (
    echo   %BAD% 無法透過 Google DNS 解析 %TEST_DOMAIN%
    set "DNSR_OK=0"
  )
)
echo(

echo 【E. 對外連線(8.8.8.8)】
if not defined IPV4 (
  echo   %BAD% 略過檢查(因為未取得 IPv4)
  set "WAN_OK=0"
) else if not defined GW (
  echo   %BAD% 略過檢查(因為未取得閘道)
  set "WAN_OK=0"
) else (
  call :PINGCHECK %TEST_IP%
  if "!PING_OK!"=="1" (
    echo   %OK% 可連到外網 IP %TEST_IP%
    set "WAN_OK=1"
  ) else (
    echo   %WARN% 無法 ping 外網 IP(有些網路會擋 ping)
    set "WAN_OK=0"
  )
)
echo(

echo 【F. 網頁是否可開(HTTPS)】
if not defined IPV4 (
  echo   %BAD% 略過檢查(因為未取得 IPv4)
  set "WEB_OK=0"
) else if not defined GW (
  echo   %BAD% 略過檢查(因為未取得閘道)
  set "WEB_OK=0"
) else (
  call :HTTPCHECK
  if "!HTTP_OK!"=="1" (
    echo   %OK% 可開啟 Google 網頁
    set "WEB_OK=1"
  ) else (
    echo   %BAD% 無法開啟 Google 網頁
    set "WEB_OK=0"
  )
)
echo(

echo ===============================================
echo 【RESULT 結論】
echo -----------------------------------------------

if not defined IPV4 (
  echo   %BAD% 目前電腦沒有取得網路位址
  echo   → 請先確認 Wi-Fi 是否已連線,或網路線是否插好
  goto :ADVICE
)

if not defined GW (
  echo   %BAD% 目前沒有預設閘道,無法正常上網
  echo   → 請先重連 Wi-Fi,或更換網路孔位
  goto :ADVICE
)

if "!GW_OK!"=="0" (
  echo   %BAD% 校內網路連線異常
  echo   → 可先重連網路,若仍失敗請通知資訊組
  goto :ADVICE
)

if "!DNSR_OK!"=="0" (
  echo   %BAD% 網址解析異常(DNS 問題)
  echo   → 可能是 DNS 設定或校內網路服務異常
  goto :ADVICE
)

if "!WEB_OK!"=="0" (
  echo   %BAD% 可連網,但網頁無法正常開啟
  echo   → 可能是防火牆、代理、憑證或外網異常
  goto :ADVICE
)

echo   %OK% 網路整體正常
echo   → 校內網路、DNS、外網、網頁開啟都正常

:ADVICE
echo(
echo 【補充說明】
echo -----------------------------------------------
if "!NODE_OK!"=="0" (
  echo - %WARN% 校內節點 %NODE_IP% 沒回應,可能是節點不回 ping 或不在同網段。
)
if "!WAN_OK!"=="0" if defined IPV4 if defined GW (
  echo - %WARN% 外網 ping 不通,不一定代表不能上網,仍要以 HTTPS 測試為主。
)
echo ===============================================
echo(
pause

 

2026年4月7日 星期二

Jamf Pro管理-清除命令與指派命令

      使用Jamf Pro派送命令時,有時候會遇到失敗的指令卡住,造成命令無法執行。所以派送命令前,我都會先取消所有命令,然後再重新派送。

1.選擇「 Cancel Management Commands」

 

3.等待命令派送


 
4.重新派送新命令


 

2026年3月30日 星期一

MacOS實用技:公文系統設定法

 到底在Mac Mini上能不能執行公文系統呢?

如果公文系統走的是純網頁模式,答案是可以的。

1.第一步:安裝Chrome

2.開啟公文系統的網站



 

2.接著會遇到出現需要安裝跨平台網頁元件的通知,只是這是EXE的執行程式阿,Windows專用。

 


 3.MacOS系統上當然無法執行,需要內政部憑證管理中心下載MacOS版本。


 


 4.接著下載好後開始安裝


 5.安裝完成後開啟測試網頁(在Windows系統上使用的是HiCOS用戶端系統環境檢測工具)


 

Windows系統:HiCOS用戶端系統環境檢測工具 

 

 

 MacOS系統上:IC卡功能檢測網頁(外接讀卡機接上後要記得配對)

 

6.讀卡機配對成功後,要把網頁關掉後重新開啟。


 

7.進入公文系統後,要記得允許彈出式視窗和重新導向。


 


2025年12月2日 星期二

Jamf Pro管理-Jamf Secure DNS traffic WebClip製作與派送

最近收到公文,通知Jamf 納管的 iPad,需要相容 TANet CDN 服務說明。之後會設定新的網路政策,改動後iPad 右上角狀態列未顯示VPN 字樣。
檢查法有三個
1.快速檢查方法:設定>一般>VPN與裝置管理>檢查是否為DNS Settings及內容過濾器為執行中
2.Jamf Trust App是否有打綠勾勾
3. iPad上開啟:https://dns-test.wandera.com/(也可以製作WebClip派送到各平板)



1. WebClip製作說明

Jamf Pro中的設定描述檔->新建

2.設定描述檔名稱為「Jamf Secure DNS traffic」

3.往下滑動找到WebClip項目


 
4.儲存後就可以部屬到設備上了


 另外一種部屬方式

上傳我做好的描述檔(含ICON圖示) 

1.新增描述檔->上傳

https://drive.google.com/file/d/1q7O2pG2K7xLWGqMuzeq96sn8-2NXD_QM/view?usp=sharing 


 

部屬後結果