我使用 Zabbix 来监控我的服务器,最近我想为 Windows 的服务器添加更多指标。出于安全考虑,我使用了 Zabbix 的用户参数功能,但它将外部命令的执行时间限制在 3 秒左右。之后,命令被强行杀死。
我想运行一些长时间运行的命令,所以我使用了 Zabbix 论坛中的技巧:在后台运行命令,将结果写入文件并使用 Zabbix 收集它们。
由于“&”运算符,这在 *nix 下相当容易,但 Windows 的 shell 中没有这样的支持。更糟糕的是,当 Zabbix kills 强行杀死cmd.exe
它用来评估命令的程序时,所有子进程都会死亡,包括未完成的后台任务。
因此,我需要一些可以切断与其孩子的所有联系的东西,这样他们就不会在级联杀戮中受到影响。
start
并且start /B
- 他们什么都不做,因为孩子总是和父母一起死去wscript
进程被强行终止而不是自行退出,那么孩子们也会死亡。hstart
- 与 invis.vbs 类似的结果At
命令 - 这需要您为任务设置一个绝对时间,而不是偏移量,因此由于 Windows 的 shell 脚本功能有限,代码会非常混乱。PsExec.exe
来自 SysInternals 套件 - 它使用服务来启动命令,因此它不受杀死的影响;但是,它会向 StdErr 打印一些横幅和日志信息,并且没有禁用此功能的开关。当我2>NUL
用来重定向它们时,Zabbix 报告错误。在以不同的组合尝试上述操作后,我注意到如果我调用hstart
from invis.vbs
,前者启动的命令在invis.vbs
被杀死时将作为无父进程单独存在。
但是,由于我需要重定向输出,因此我要运行的命令始终采用cmd.exe …
在组策略中,我们Deny logon through Remote Desktop
为Domain Computers
组启用了设置。我将作为该组成员的计算机提升为域控制器。升职后,电脑当然不再是Domain Computers
群的成员,而是:
Deny logon through Remote Desktop
设置仍然有效我最终发现您可以在Local Security Policy
MMC 中编辑设置,但现在我很担心,因为:
Define these policy settings
框有谁知道这种行为的任何解决方法?如果没有可用的,是否有一种简单的方法来审核这些设置?