有一段时间我用SNMP监视UNIX / Linux服务器。 修改snmpd.conf文件并添加类似内容
view systemview included .1.2.3.4.5.6.789 pass .1.2.3.4.5.6.789 /bin/bash /bin/myscript.sh
让我运行自定义脚本到SNMP OID的。 我在Windows中有一个PowerShell脚本,我需要做同样的,如何/在哪里configuration和设置?
盒子是Windows Server 2008(我认为R2)
据我所知,唯一的方法就是执行SNMP扩展代理(DLL)。 可能已经有人实施了一个扩展代理,允许你执行任意的命令(因为它听起来像一个方便的事情),但我不熟悉一个。
Microsoft在开发和安装SNMP扩展代理方面有各种文档。 在CodeProject上开发SNMP扩展代理也有一个很好的简洁介绍。
一个允许任意定义命令执行的SNMP扩展代理肯定会很有趣,但是我没有足够的空闲时间来编写它。
如上所述,在收到SNMP陷阱之后,我不知道任何会触发脚本的东西 – 除非您将这样的守护进程安装到Windows上,否则Windows本身不会成为陷阱接收器,只能将它们发送给Windows 。
如果您在“事件日志”中注册事件时尝试执行某些操作,则最好使用Windows Server 2008的内置“附加任务到此事件”选项,您将看到如果右键单击在事件日志中的任何事件。
为了在事件被logging时引发实际的SNMP陷阱,请查看evntwin.exe,或者如果您更熟悉CLI evntcmd.exe
有几个程序 – 我过去使用的是What's Up Gold – 可以对收到的SNMP陷阱做出反应。
如果您认为我可以提供更多信息,请回到我身边。
-Lewis
编辑:也许有用的东西是临时事件消费者,但它本质上需要一个脚本不断运行,它使用VBScript,所以你需要适应PowerShell或适应您的PowerShell脚本VBScript。 看看: http : //msdn.microsoft.com/en-us/library/aa392396(v=VS.85).aspx
本质上这个脚本监视事件日志,但概念是相同的。
sComputer = "." Set oWMIService = GetObject("winmgmts:{(Security)}!\\" & sComputer & "\root\cimv2") Set cEvents = oWMIService.ExecNotificationQuery _ ("SELECT * FROM __InstanceCreationEvent WHERE " _ & "Targetinstance ISA 'Win32_NTLogEvent'") Do Set oEvent = cEvents.NextEvent Select Case oEvent.TargetInstance.EventCode Case "100" Wscript.Echo "Event 100 occurred". End Select Loop
如果有人偶然发现,目前似乎有可用于Windows的免费软件解决scheme,可以处理SNMP陷阱消息: