diff --git a/README.md b/README.md
index bf0d825..baae762 100644
--- a/README.md
+++ b/README.md
@@ -7,18 +7,18 @@
-
:trollface: 哪吒监控 一站式轻监控轻运维系统。支持系统状态、HTTP(SSL 证书变更、即将到期、到期)、TCP、Ping 监控报警,命令批量执行和计划任务。
+ :trollface: 哪吒监控 一站式轻监控轻运维系统。支持系统状态、HTTP(SSL 证书变更、即将到期、到期)、TCP、Ping 监控报警,计划任务和在线终端。
\>> QQ 交流群:872069346 **加群要求:已搭建好哪吒监控 & 有 2+ 服务器**
\>> [我们的用户](https://www.google.com/search?q="powered+by+哪吒监控"&filter=0) (Google)
-| 默认主题 | DayNight [@JackieSung](https://github.com/JackieSung4ev) | hotaru |
-| ---------------------------------------------------------------------------------- | ------------------------------------------------------------ | -------------------------------------------------------------------------- |
-| ![默认主题](resource/template/theme-default/screenshot.png) | ![daynight](resource/template/theme-daynight/screenshot.png) | |
-| | | |
-| ![默认主题魔改](https://cdn.jsdelivr.net/gh/idarku/img@main/me/1631120192341.webp) | | |
+| 默认主题 | DayNight [@JackieSung](https://github.com/JackieSung4ev) | hotaru |
+| ---------------------------------------------------------------------------------------- | ------------------------------------------------------------ | -------------------------------------------------------------------------- |
+| ![默认主题](resource/template/theme-default/screenshot.png) | ![daynight](resource/template/theme-daynight/screenshot.png) | |
+| | | |
+| ![默认主题魔改](https://cdn.jsdelivr.net/gh/idarku/img@main/me/1631120192341.webp) | | |
## 安装脚本
@@ -45,7 +45,8 @@ _\* 使用 WatchTower 可以自动更新面板,Windows 终端可以使用 nssm
- `--report-delay` 系统信息上报的间隔,默认为 1 秒,可以设置为 3 来进一步降低 agent 端系统资源占用(配置区间 1-4)
- `--skip-conn` 不监控连接数,机场/连接密集型机器推荐设置,不然比较占 CPU([shirou/gopsutil/issues#220](https://github.com/shirou/gopsutil/issues/220))
- `--skip-procs` 不监控进程数,也可以降低 agent 占用
-- `--disable-auto-update` 禁止 Agent 自动更新
+- `--disable-auto-update` 禁止 Agent 自动更新(安全特性)
+- `--disable-command-execute` 禁止在 Agent 机器上执行定时任务、打开在线终端(安全特性)
## 功能说明
@@ -271,7 +272,7 @@ restart() {
- 实时通道断开/网页终端连接失败
+ 实时通道断开/在线终端连接失败
使用反向代理时需要针对 `/ws`,`/terminal` 路径的 WebSocket 进行特别配置以支持实时更新服务器状态和 **WebSSH**。
diff --git a/cmd/agent/main.go b/cmd/agent/main.go
index acc1559..139fbf6 100644
--- a/cmd/agent/main.go
+++ b/cmd/agent/main.go
@@ -29,13 +29,14 @@ import (
)
type AgentConfig struct {
- SkipConnectionCount bool
- SkipProcsCount bool
- DisableAutoUpdate bool
- Debug bool
- Server string
- ClientSecret string
- ReportDelay int
+ SkipConnectionCount bool
+ SkipProcsCount bool
+ DisableAutoUpdate bool
+ DisableCommandExecute bool
+ Debug bool
+ Server string
+ ClientSecret string
+ ReportDelay int
}
var (
@@ -75,6 +76,7 @@ func main() {
flag.IntVar(&agentConf.ReportDelay, "report-delay", 1, "系统状态上报间隔")
flag.BoolVar(&agentConf.SkipConnectionCount, "skip-conn", false, "不监控连接数")
flag.BoolVar(&agentConf.SkipProcsCount, "skip-procs", false, "不监控进程数")
+ flag.BoolVar(&agentConf.DisableCommandExecute, "disable-command-execute", false, "禁止在此机器上执行命令")
flag.BoolVar(&agentConf.DisableAutoUpdate, "disable-auto-update", false, "禁用自动升级")
flag.Parse()
@@ -302,6 +304,10 @@ func handleHttpGetTask(task *pb.Task, result *pb.TaskResult) {
}
func handleCommandTask(task *pb.Task, result *pb.TaskResult) {
+ if agentConf.DisableCommandExecute {
+ result.Data = "此 Agent 已禁止命令执行"
+ return
+ }
startedAt := time.Now()
var cmd *exec.Cmd
var endCh = make(chan struct{})
@@ -347,6 +353,10 @@ type WindowSize struct {
}
func handleTerminalTask(task *pb.Task) {
+ if agentConf.DisableCommandExecute {
+ println("此 Agent 已禁止命令执行")
+ return
+ }
var terminal model.TerminalTask
err := json.Unmarshal([]byte(task.GetData()), &terminal)
if err != nil {