.bat 文件 - Nagios v3.2 服务检查并在停止时启动

.bat 文件 - Nagios v3.2 服务检查并在停止时启动

我刚刚开始接触编程,因此我为我的无知道歉。我正在尝试创建一个 .bat 文件来检查服务是否在 XP Pro 上运行。

如果服务正在运行,它将退出 0。如果服务已停止,启动服务等待 10 秒(我猜是通过 ping)检查服务是否正在运行,如果服务正在运行,则退出 0,如果服务已停止,则启动服务等待 10 秒

总共进行 3 次此检查。如果服务在该时间内没有启动:退出 2

退出 0 = 正常 退出 1 = 警告 退出 3 = 严重(并且会发出警报)

我需要为 3 个不同的服务执行此操作,但我认为最好为每个服务创建一个。这样,您就会收到有关未恢复的特定服务的通知。

目标是如果服务停止,它将启动该服务。如果 30 秒后无法启动该服务,它将发送警报。

我尝试使用 .bat 执行此操作的原因是,这与其他所有脚本一致,并且我不想通过添加不同类型的代码使其变得更加复杂。一致性太好了!

我再次为我的无知道歉,我在最后一刻才被投入到这个项目中。

感谢您的帮助和阅读我的问题!

答案1

检查服务是否正在运行实际上是 NSClient++ 的内置功能。如果服务停止,我会使用 NRPE 事件处理程序重新启动服务。基本上,如果服务停止,NRPE 将运行一个脚本。

脚本是

@echo off
net start %1
@exit 0

我在 nsclient.ini 中定义了事件处理程序,例如:

restartwsus=scripts\runcmd.bat wsusservice

在标题下; A list of scripts available to run from the CheckExternalScripts module. Syntax is: <command>=<script> <arguments>

(重启 NSClient++)

在 Nagios 服务器上,我在 command.cfg 中将命令定义为:

define command{
 command_name restartwsus
 command_line /usr/lib/nagios/plugins/check_nrpe -H '$HOSTADDRESS$' -c restartwsus
}

并将服务定义为:

define service{
        use                     generic-service
        host_name               wsusserver
        service_description     WSUS
        contacts                me
        notification_options    w,c,r
        notification_period     24x7
        notification_interval   0
        check_command           check_nt!SERVICESTATE!-d SHOWALL -l WsusService
        event_handler           restartwsus
        }

我希望这能有所帮助。

相关内容