从 Windows Server 2008 开始,wuauserv 不再是一直运行的服务,而是作为计划任务运行。我不确定计划任务的具体创建方式,因为计划似乎是由另一个服务生成和编辑的。在此之前,我们设置了 nagios 来检查正在运行的服务,以确保它正在接受更新。
我的问题是,如何利用 nagios 来跟踪 Windows Server 2008+ 中 wuauserv 服务的正确执行/运行,以确保它正在接受更新?
答案1
看起来有很多插件Nagios 交易所检查可用的更新--例如,这个. 我用过这个我相信在过去是这样。不过,这并不是您要问的确切问题;您问的是是否存在更新,而您问的是系统是否正在检查更新。
更接近您所寻找的是类似以下 PowerShell 脚本的内容:
$lastcheck = Get-ItemProperty -Path Registry::"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\Results\Detect"
$lastdate=[datetime]$lastcheck.LastSuccessTime
$currdate = (Get-Date)
$status = new-timespan -start $lastdate -end $currdate
If ($status.days -eq 0 -and $lastcheck.LastError -eq 0) {
Write-Host "OK: Wuauserv last ran $lastdate."
$exitcode = $status.Days
}
elseif ($status.days -eq 1 -and $lastcheck.LastError -eq 0) {
Write-Host "WARNING: Wuauserv last ran $lastdate."
$exitcode = $status.Days
} else {
Write-Host "CRITICAL: Wuauserv last ran $lastdate."
$exitcode = 2
}
exit $exitcode
(您需要检查日期是否在过去 24 小时内(默认间隔为 22 小时)并且最后的错误是否为 0。)