小编bil*_*.cn的帖子

需要一个脚本/批处理/程序来运行一个在父进程被杀死时不会被杀死的命令

场景

我使用 Zabbix 来监控我的服务器,最近我想为 Windows 的服务器添加更多指标。出于安全考虑,我使用了 Zabbix 的用户参数功能,但它将外部命令的执行时间限制在 3 秒左右。之后,命令被强行杀死。

我想运行一些长时间运行的命令,所以我使用了 Zabbix 论坛中的技巧:在后台运行命令,将结果写入文件并使用 Zabbix 收集它们。

由于“&”运算符,这在 *nix 下相当容易,但 Windows 的 shell 中没有这样的支持。更糟糕的是,当 Zabbix kills 强行杀死cmd.exe它用来评估命令的程序时,所有子进程都会死亡,包括未完成的后台任务。

因此,我需要一些可以切断与其孩子的所有联系的东西,这样他们就不会在级联杀戮中受到影响。

我试过的

  • start并且start /B- 他们什么都不做,因为孩子总是和父母一起死去
  • WScript.Shell.Run as invis.vbs from StackOverflow - 有时工作。如果wscript进程被强行终止而不是自行退出,那么孩子们也会死亡。
  • hstart - 与 invis.vbs 类似的结果
  • At 命令 - 这需要您为任务设置一个绝对时间,而不是偏移量,因此由于 Windows 的 shell 脚本功能有限,代码会非常混乱。
  • (编辑) PsExec.exe来自 SysInternals 套件 - 它使用服务来启动命令,因此它不受杀死的影响;但是,它会向 StdErr 打印一些横幅和日志信息,并且没有禁用此功能的开关。当我2>NUL用来重定向它们时,Zabbix 报告错误。

在以不同的组合尝试上述操作后,我注意到如果我调用hstartfrom invis.vbs,前者启动的命令在invis.vbs被杀死时将作为无父进程单独存在。

但是,由于我需要重定向输出,因此我要运行的命令始终采用cmd.exe …

scripting windows

6
推荐指数
1
解决办法
6730
查看次数

域控制器的本地安全策略从何而来?

在组策略中,我们Deny logon through Remote DesktopDomain Computers组启用了设置。我将作为该组成员的计算机提升为域控制器。升职后,电脑当然不再是Domain Computers群的成员,而是:

  1. Deny logon through Remote Desktop设置仍然有效
  2. 该设置未在组策略结果中列出

我最终发现您可以在Local Security PolicyMMC 中编辑设置,但现在我很担心,因为:

  1. 您无法轻松确定该值是否已从默认值更改,因为本地安全策略中的设置没有该Define these policy settings
  2. 远程审核很困难,因为设置没有显示在组策略结果中

有谁知道这种行为的任何解决方法?如果没有可用的,是否有一种简单的方法来审核这些设置?

windows group-policy

6
推荐指数
1
解决办法
8976
查看次数

标签 统计

windows ×2

group-policy ×1

scripting ×1