name: btpanel description: 寶塔面板(BT-Panel)運維監控技能,提供伺服器資源監控、網站狀態檢查、服務狀態檢查、SSH安全審計、計劃任務管理、日誌讀取等功能 user-invocable: true disable-model-invocation: false icon: icon/bt.png metadata: openclaw: requires: bins: - python3 keywords: - 寶塔面板 - BT-Panel - 面板 - 伺服器監控 - 系統資源 - CPU監控 - 記憶體監控 - 磁碟監控 - 網站狀態 - SSL證書 - 服務狀態 - 日誌讀取 - SSH - 計劃任務 - crontab - 備份任務
寶塔面板伺服器的全方位運維監控工具,支援多伺服器管理、資源監控、網站狀態檢查、服務狀態檢查、SSH安全審計、計劃任務管理等功能。
技能包提供以下圖示檔案,可在生成報告時引用:
| 檔案 | 格式 | 用途 |
|---|---|---|
icon/bt-logo.svg |
SVG | 向量圖示,適合縮放 |
使用示例(生成報告時):
# 伺服器巡檢報告
## 概述
...
本技能用於查詢和展示伺服器狀態資料,AI應遵循以下原則:
執行流程示例:
AI: 我將為您執行以下操作:
1. 獲取伺服器系統資源狀態(CPU、記憶體、磁碟)
2. 檢查網站執行狀態
3. 檢查服務執行狀態
正在獲取資料,請稍候...
[執行命令]
[展示結果和分析]
當前寶塔面板技能包,共包含 3 個相互關聯的技能:
| 技能名稱 | 描述 | 依賴關係 |
|---|---|---|
| btpanel | 運維監控技能 | ✅ 基礎技能,主要用於資源監控、網站狀態檢查、服務狀態檢查等 |
| btpanel-files | 檔案管理技能 | ✅ 提供遠端伺服器檔案輔助服務,可以讀取檔案列表和內容 |
| btpanel-phpsite | PHP 網站管理技能 | ✅ 提供遠端伺服器 PHP 網站管理功能,能夠部署和管理php網站 |
重要: 沒有伺服器資訊時需要新增
使用配置工具管理伺服器:
# 檢視幫助
python3 {baseDir}/scripts/bt-config.py -h
# 新增伺服器
python3 {baseDir}/scripts/bt-config.py add -n prod-01 -H https://panel.example.com:8888 -t YOUR_TOKEN
# 列出伺服器
python3 {baseDir}/scripts/bt-config.py list
# 設定閾值
python3 {baseDir}/scripts/bt-config.py threshold --cpu 75 --memory 80
當用戶第一次使用本技能時,需要先配置伺服器連線資訊:
# 新增伺服器(需要面板地址和API Token)
python3 {baseDir}/scripts/bt-config.py add -n prod-01 -H https://panel.example.com:8888 -t YOUR_API_TOKEN
# 檢視已配置的伺服器
python3 {baseDir}/scripts/bt-config.py list
獲取 API Token 的方法: 1. 登入寶塔面板 2. 進入「面板設定」->「API 介面」 3. 點選「獲取 API Token」
重要提示 - SSL 證書驗證配置: 新增伺服器時,AI 應詢問使用者:
"您的寶塔面板是否使用了受信任的 SSL 證書(如 Let's Encrypt、商業 CA 證書)?"
--verify-ssl false 引數示例:
# 自簽名證書場景
python3 {baseDir}/scripts/bt-config.py add -n prod-01 -H https://panel.example.com:8888 -t YOUR_TOKEN --verify-ssl false
# 受信任證書場景(預設)
python3 {baseDir}/scripts/bt-config.py add -n prod-01 -H https://panel.example.com:8888 -t YOUR_TOKEN
使用者意圖識別: - "幫我配置寶塔伺服器" → 引導使用者新增伺服器配置,先詢問 SSL 證書情況 - "新增一臺伺服器" → 執行 bt-config.py add,根據證書型別決定是否加 --verify-ssl 引數 - "檢視有哪些伺服器" → 執行 bt-config.py list
當用戶需要了解所有伺服器的整體執行狀態時:
# 檢視所有伺服器的資源使用情況
python3 {baseDir}/scripts/monitor.py --format table
# 檢視所有伺服器的網站狀態彙總
python3 {baseDir}/scripts/sites.py
# 檢視所有伺服器的服務狀態
python3 {baseDir}/scripts/services.py
使用者意圖識別: - "伺服器整體情況怎麼樣" → 執行 monitor.py - "所有伺服器健康狀態" → 執行 monitor.py + sites.py - "多伺服器資源使用情況" → 執行 monitor.py --format table
當用戶需要對單臺伺服器進行全面檢查時:
# 指定伺服器名稱進行各項檢查
python3 {baseDir}/scripts/monitor.py --server prod-01 --format table
python3 {baseDir}/scripts/sites.py --server prod-01
python3 {baseDir}/scripts/services.py --server prod-01
python3 {baseDir}/scripts/ssh.py --status --server prod-01
python3 {baseDir}/scripts/crontab.py --backup-only --server prod-01
使用者意圖識別: - "檢查 prod-01 這臺伺服器" → 執行上述檢查命令 - "幫我日常巡檢" → 執行系統監控、網站狀態、服務狀態檢查 - "這臺伺服器有問題嗎" → 執行全面檢查並彙總告警
當用戶關心SSL證書是否即將過期時:
# 檢視SSL即將過期的網站
python3 {baseDir}/scripts/sites.py --filter ssl-warning
# 檢視SSL已過期的網站
python3 {baseDir}/scripts/sites.py --filter ssl-expired
使用者意圖識別: - "SSL證書快過期了嗎" → 執行 sites.py --filter ssl-warning - "有哪些網站證書過期了" → 執行 sites.py --filter ssl-expired
當用戶需要進行安全檢查時:
# 檢視SSH登入失敗記錄
python3 {baseDir}/scripts/ssh.py --logs --filter failed
# 搜尋特定IP的登入記錄
python3 {baseDir}/scripts/ssh.py --logs --search 192.168.1.100
# 檢視SSH服務狀態
python3 {baseDir}/scripts/ssh.py --status
使用者意圖識別: - "有沒有異常登入" → 執行 ssh.py --logs --filter failed - "查一下這個IP的登入記錄" → 執行 ssh.py --logs --search IP - "SSH安全檢查" → 執行 ssh.py --status 和 ssh.py --logs
當某個服務出現問題時:
# 檢視服務狀態
python3 {baseDir}/scripts/services.py --server prod-01
# 檢視服務錯誤日誌
python3 {baseDir}/scripts/logs.py --server prod-01 --service nginx --lines 200
python3 {baseDir}/scripts/logs.py --server prod-01 --service redis
使用者意圖識別: - "Nginx/Apache/Redis出問題了" → 檢視服務狀態 + 檢視錯誤日誌 - "服務報錯了,幫我看看日誌" → 執行 logs.py 檢視對應服務日誌
當用戶關心備份是否正常時:
# 檢視所有備份任務
python3 {baseDir}/scripts/crontab.py --backup-only
# 檢視特定備份任務的執行日誌
python3 {baseDir}/scripts/crontab.py --logs --task-id 11
使用者意圖識別: - "備份任務正常嗎" → 執行 crontab.py --backup-only - "檢視備份日誌" → 執行 crontab.py --logs --task-id ID
# 檢視幫助
python3 {baseDir}/scripts/monitor.py -h
# 監控所有伺服器
python3 {baseDir}/scripts/monitor.py
# 監控指定伺服器
python3 {baseDir}/scripts/monitor.py --server prod-01
# JSON格式輸出
python3 {baseDir}/scripts/monitor.py --format json
# 表格格式輸出
python3 {baseDir}/scripts/monitor.py --format table
# 輸出到檔案
python3 {baseDir}/scripts/monitor.py --output report.json
# 檢視幫助
python3 {baseDir}/scripts/sites.py -h
# 檢查所有伺服器的網站狀態
python3 {baseDir}/scripts/sites.py
# 檢查指定伺服器
python3 {baseDir}/scripts/sites.py --server prod-01
# 只顯示停止的網站
python3 {baseDir}/scripts/sites.py --filter stopped
# 只顯示SSL即將過期的網站(30天內)
python3 {baseDir}/scripts/sites.py --filter ssl-warning
# 只顯示SSL已過期的網站
python3 {baseDir}/scripts/sites.py --filter ssl-expired
# JSON格式輸出
python3 {baseDir}/scripts/sites.py --format json
# 輸出到檔案
python3 {baseDir}/scripts/sites.py --output sites.json
# 檢視幫助
python3 {baseDir}/scripts/services.py -h
# 檢查所有伺服器的服務狀態
python3 {baseDir}/scripts/services.py
# 檢查指定伺服器
python3 {baseDir}/scripts/services.py --server prod-01
# 只檢查特定服務
python3 {baseDir}/scripts/services.py --service nginx --service redis
# JSON格式輸出
python3 {baseDir}/scripts/services.py --format json
# 輸出到檔案
python3 {baseDir}/scripts/services.py --output services.json
# 檢視幫助
python3 {baseDir}/scripts/logs.py -h
# 檢視Nginx錯誤日誌
python3 {baseDir}/scripts/logs.py --service nginx
# 檢視Redis日誌
python3 {baseDir}/scripts/logs.py --service redis
# 檢視Apache錯誤日誌
python3 {baseDir}/scripts/logs.py --service apache
# 檢視MySQL錯誤日誌
python3 {baseDir}/scripts/logs.py --service mysql
# 檢視MySQL慢查詢日誌
python3 {baseDir}/scripts/logs.py --service mysql --log-type slow
# 檢視PostgreSQL日誌(需要外掛)
python3 {baseDir}/scripts/logs.py --service pgsql
# 檢視PostgreSQL慢日誌
python3 {baseDir}/scripts/logs.py --service pgsql --log-type slow
# 指定伺服器和行數
python3 {baseDir}/scripts/logs.py --server prod-01 --service nginx --lines 200
# JSON格式輸出
python3 {baseDir}/scripts/logs.py --service nginx --format json
# 檢視幫助
python3 {baseDir}/scripts/ssh.py -h
# 檢視SSH服務狀態
python3 {baseDir}/scripts/ssh.py --status
# 檢視SSH登入日誌
python3 {baseDir}/scripts/ssh.py --logs
# 只查看失敗的登入日誌
python3 {baseDir}/scripts/ssh.py --logs --filter failed
# 只查看成功的登入日誌
python3 {baseDir}/scripts/ssh.py --logs --filter success
# 搜尋特定IP的登入記錄
python3 {baseDir}/scripts/ssh.py --logs --search 192.168.1.1
# 指定伺服器
python3 {baseDir}/scripts/ssh.py --status --server prod-01
# JSON格式輸出
python3 {baseDir}/scripts/ssh.py --logs --format json
# 檢視幫助
python3 {baseDir}/scripts/crontab.py -h
# 檢視所有計劃任務
python3 {baseDir}/scripts/crontab.py
# 只查看備份任務
python3 {baseDir}/scripts/crontab.py --backup-only
# 檢視指定伺服器
python3 {baseDir}/scripts/crontab.py --server prod-01
# 檢視備份任務日誌
python3 {baseDir}/scripts/crontab.py --logs --task-id 11
# JSON格式輸出
python3 {baseDir}/scripts/crontab.py --format json
| 引數 | 說明 | 預設值 |
|---|---|---|
--server, -s |
指定伺服器名稱 | 所有伺服器 |
--format, -f |
輸出格式 (json/table) | json |
--output, -o |
輸出檔案路徑 | 標準輸出 |
--config, -c |
配置檔案路徑 | 自動查詢 |
| 引數 | 說明 | 預設值 |
|---|---|---|
--server, -s |
指定伺服器名稱 | 所有伺服器 |
--format, -f |
輸出格式 (json/table) | table |
--output, -o |
輸出檔案路徑 | 標準輸出 |
--filter |
過濾條件 (stopped/ssl-warning/ssl-expired) | 無 |
--config, -c |
配置檔案路徑 | 自動查詢 |
| 引數 | 說明 | 預設值 |
|---|---|---|
--server, -s |
指定伺服器名稱 | 所有伺服器 |
--format, -f |
輸出格式 (json/table) | table |
--output, -o |
輸出檔案路徑 | 標準輸出 |
--service |
指定要檢查的服務(可多次指定) | 預設服務列表 |
--config, -c |
配置檔案路徑 | 自動查詢 |
| 引數 | 說明 | 預設值 |
|---|---|---|
--server, -s |
指定伺服器名稱 | 所有伺服器 |
--service |
服務名稱 (nginx/apache/redis/mysql/pgsql) | 必填 |
--log-type |
日誌型別 (error/slow) | error |
--lines, -n |
返回最後N行日誌 | 100 |
--format, -f |
輸出格式 (json/table) | table |
--output, -o |
輸出檔案路徑 | 標準輸出 |
--config, -c |
配置檔案路徑 | 自動查詢 |
注意:只有已安裝的服務才能獲取日誌,嘗試獲取未安裝服務的日誌會返回錯誤。
| 引數 | 說明 | 預設值 |
|---|---|---|
--server, -s |
指定伺服器名稱 | 所有伺服器 |
--status |
檢視SSH服務狀態 | 否 |
--logs |
檢視SSH登入日誌 | 否 |
--filter |
日誌過濾 (ALL/success/failed) | ALL |
--search |
搜尋關鍵字(IP或使用者名稱) | 無 |
--limit, -n |
返回日誌條數 | 50 |
--format, -f |
輸出格式 (json/table) | table |
--output, -o |
輸出檔案路徑 | 標準輸出 |
--config, -c |
配置檔案路徑 | 自動查詢 |
| 引數 | 說明 | 預設值 |
|---|---|---|
--server, -s |
指定伺服器名稱 | 所有伺服器 |
--backup-only |
只顯示備份任務 | 否 |
--logs |
檢視任務日誌 | 否 |
--task-id |
任務ID(配合--logs使用) | 無 |
--days |
日誌查詢天數 | 7 |
--format, -f |
輸出格式 (json/table) | table |
--output, -o |
輸出檔案路徑 | 標準輸出 |
--config, -c |
配置檔案路徑 | 自動查詢 |
通過單一API介面獲取完整的系統監控資料:
7w4.net小蔥技能站收錄全網優質技能,值得收藏。
支援多種專案型別:
| 型別 | 程序資訊 | 執行狀態判斷 |
|---|---|---|
| PHP | 無 | status==1 && stop為空 |
| Java | pid_info | pid > 0 |
| Node | load_info | run==true |
| Go | load_info | run==true |
| Python | pids | run==true |
| .NET | load_info | run==true |
| Proxy(反代) | 無 | status==1 |
| HTML(靜態) | 無 | status==1 |
| Other(其他) | load_info | run==true |
檢查專案: - 執行狀態: 執行中/已停止/啟動中 - SSL證書: 有效/即將過期/已過期 - 程序資訊: PID、記憶體、CPU、執行緒數(適用於Java/Node/Go/Python/.NET/Other) - 反代健康: 反代專案的後端健康狀態 - 基礎資訊: 路徑、域名、PHP版本、埠、代理地址
支援檢查的服務:
| 服務 | 狀態檢查 | 日誌支援 |
|---|---|---|
| Nginx | ✓ | ✓ 錯誤日誌 |
| Apache | ✓ | ✓ 錯誤日誌 |
| MySQL | ✓ | ✓ 錯誤日誌/慢日誌 |
| Redis | ✓ | ✓ 日誌檔案 |
| Memcached | ✓ | ✗ |
| Pure-FTPD | ✓ | ✗ |
| PHP (多版本) | ✓ | ✗ |
| PostgreSQL | ✓ | ✓ 錯誤日誌/慢日誌 |
服務狀態欄位說明:
| 欄位 | 說明 |
|---|---|
installed (setup) |
服務是否已安裝 |
status |
服務是否正在執行 |
version |
已安裝的版本號 |
pid |
主程序ID(執行中時) |
重要區別:
- installed=false:服務未安裝,無法獲取日誌
- installed=true, status=false:服務已安裝但未執行
- installed=true, status=true:服務已安裝且正在執行
PHP多版本共存說明:
- PHP是支援多版本共存的服務,一臺伺服器可能同時安裝多個PHP版本
- PHP服務名稱格式:php-X.X(如 php-8.2、php-7.4)
- 系統會自動掃描已安裝的PHP版本並分別顯示狀態
- 常見PHP版本:8.5, 8.4, 8.3, 8.2, 8.1, 8.0, 7.4, 7.3, 7.2, 7.1, 7.0, 5.4, 5.3, 5.2
檢查專案: - 執行狀態: 執行中/已停止 - 版本資訊: 已安裝版本號 - 程序PID: 主程序ID
支援的日誌型別:
| 日誌型別 | 服務 | 獲取方式 |
|---|---|---|
| 錯誤日誌 | nginx | 檔案: /www/server/nginx/logs/error.log |
| 錯誤日誌 | apache | 檔案: /www/wwwlogs/error_log |
| 日誌檔案 | redis | 檔案: /www/server/redis/redis.log |
| 錯誤日誌 | mysql | 介面: /database?action=GetErrorLog |
| 慢日誌 | mysql | 介面: /database?action=GetSlowLogs |
| 錯誤日誌 | pgsql | 外掛介面: pgsql_manager |
| 慢日誌 | pgsql | 外掛介面: pgsql_manager |
注意事項:
- 只有已安裝(installed=true)的服務才能獲取日誌
- 嘗試獲取未安裝服務的日誌會返回錯誤
- Memcached 和 Pure-FTPD 不支援日誌獲取
檢查專案: - SSH服務狀態: 執行中/已停止 - 埠: SSH監聽埠 - Ping設定: 是否允許ping - 防火牆狀態: 是否啟用 - Fail2ban: 是否安裝和執行
登入日誌欄位: - 時間: 登入時間 - 型別: 成功/失敗 - 使用者: 登入使用者名稱 - IP地址: 來源IP - 地區: IP歸屬地 - 登入方式: password/key
任務型別: - 備份網站: 自動備份網站檔案和資料庫 - 備份資料庫: 單獨備份資料庫 - 備份目錄: 備份指定目錄 - Shell指令碼: 自定義Shell命令 - 同步時間: NTP時間同步 - 切割日誌: 日誌分割任務 - 訪問URL: 定時HTTP請求
檢查專案: - 任務狀態: 啟用/停用 - 執行週期: 每天/每小時/每週/每月/間隔分鐘 - 備份目標: 網站名稱/資料庫名稱 - 保留數量: 備份保留份數 - 執行結果: 最後一次執行狀態
| 剩餘天數 | 告警級別 |
|---|---|
| 已過期 | critical |
| ≤ 7 天 | critical |
| ≤ 30 天 | warning |
可在配置檔案中設定告警閾值:
global:
thresholds:
cpu: 80 # CPU使用率告警閾值(%)
memory: 85 # 記憶體使用率告警閾值(%)
disk: 90 # 磁碟使用率告警閾值(%)
這個技能質量不錯,文件寫得很詳細,功能覆蓋了伺服器監控、網站狀態、SSL證書檢查等常用運維場景。配置管理清晰,支援多伺服器管理。不足之處是部分文件引用了不存在的圖示檔案,README太簡單缺少完整的使用說明。如果你需要管理寶塔面板伺服器,這個工具值得一試,但建議先仔細閱讀SKILL.md文件瞭解詳細用法。