【摘要】
实时掌握服务器运行状态对系统管理员来说非常重要,服务器出现问题是第一时间知道可以保证及时处理,将意外损失降到最小。利用powershell可简单实现监控功能,并在服务器掉线或关键服务停止时发出邮件通知管理员,使管理员可以及时处理故障。
【正文】
如图,除powershell脚本文件外,需要创建3个txt文件,分别为Servers.txt、Services.txt、Urls.txt。三个文件都是以csv格式导入,第一行内容需要保留,添加内容由第二行开始
Servers.txt添加服务器名用于监控服务器在线情况
Services.txt添加服务器名及服务名用于监控关键服务运行情况
Urls.txt添加网站用于监控网页是否能正常打开
$Urls = import-csv Urls.txt
$Servers = import-csv Servers.txt
$Services = import-csv Services.txt
$mailcontent = $null
$mailFrom = "XXX@canway.net"
$mailTo = "XXX@canway.net"
$Credential = Get-Credential -Credential $mailFrom
While($true)
{
Foreach ($server in $Servers)
{
$hostname = $server.server
if (!(test-connection $hostname -count 2 -quiet))
{$date = Get-Date
$mailcontent = $mailcontent + "$hostname is offline $date `n"
Write-Host "$hostname is offline $date" -ForegroundColor Red}
}
Foreach ($service in $Services)
{
$Server = $Service.server
$ServiceName = $Service.service
If (!(test-connection $Server -count 2 -quiet))
{$date = Get-Date
$mailcontent = $mailcontent + "$Server is offline $date `n"
Write-Host "$Server is offline $date" -ForegroundColor Red}
Else
{$Servicestate = (Get-WmiObject -Class win32_service -ComputerName $Server|Where-Object{$_.Name -eq $ServiceName}).State
If($Servicestate -ne "Running")
{$date = Get-Date
$mailcontent = $mailcontent + "$ServiceName in $Server is not running! $date `n"
Write-Host "$ServiceName in $Server is not running! $date" -ForegroundColor Red}
}
}
Foreach($url in $Urls)
{
$Website = $url.website
Invoke-WebRequest $Website
If(!$?)
{$date = Get-Date
$mailcontent = $mailcontent + "$Website 无法连接 $date `n"
Write-Host "$Website 无法连接 $date" -ForegroundColor Red}
}
If($mailcontent -ne $null)
{
Send-MailMessage -Body $mailcontent -SmtpServer smtp.partner.outlook.cn -From $mailFrom -To $mailTo -Subject "Warning" -UseSsl -Credential $Credential -Port 587
}
$mailcontent = $null
sleep 3600
}
用1.2所列出的脚本内容创建powershell脚本,与Servers.txt、Services.txt、Urls.txt放在同一路径下,用有权限的账户运行
当有任意一项检查不通过时,会发邮件通知管理员。如图,修改以下位置可以自定义收件人和发件人。
运行脚本后会让你填入邮箱密码,之后脚本就会每个小时检查一次,检查不通过时发邮件到设定的收件人,脚本检查间隔可自定义,如图,初始设置为3600s
收到邮件如图
选择发件人邮箱后需要在下面的命令里修改Smtp服务器和端口号
Send-MailMessage -Body $mailcontent -SmtpServer smtp.partner.outlook.cn -From $mailFrom -To $mailTo -Subject"Warning" -UseSsl -Credential $Credential -Port 587
自由广告区 |
分类导航 |
邮件新闻资讯: IT业界 | 邮件服务器 | 邮件趣闻 | 移动电邮 电子邮箱 | 反垃圾邮件|邮件客户端|网络安全 行业数据 | 邮件人物 | 网站公告 | 行业法规 网络技术: 邮件原理 | 网络协议 | 网络管理 | 传输介质 线路接入 | 路由接口 | 邮件存储 | 华为3Com CISCO技术 | 网络与服务器硬件 操作系统: Windows 9X | Linux&Uinx | Windows NT Windows Vista | FreeBSD | 其它操作系统 邮件服务器: 程序与开发 | Exchange | Qmail | Postfix Sendmail | MDaemon | Domino | Foxmail KerioMail | JavaMail | Winwebmail |James Merak&VisNetic | CMailServer | WinMail 金笛邮件系统 | 其它 | 反垃圾邮件: 综述| 客户端反垃圾邮件|服务器端反垃圾邮件 邮件客户端软件: Outlook | Foxmail | DreamMail| KooMail The bat | 雷鸟 | Eudora |Becky! |Pegasus IncrediMail |其它 电子邮箱: 个人邮箱 | 企业邮箱 |Gmail 移动电子邮件:服务器 | 客户端 | 技术前沿 邮件网络安全: 软件漏洞 | 安全知识 | 病毒公告 |防火墙 攻防技术 | 病毒查杀| ISA | 数字签名 邮件营销: Email营销 | 网络营销 | 营销技巧 |营销案例 邮件人才:招聘 | 职场 | 培训 | 指南 | 职场 解决方案: 邮件系统|反垃圾邮件 |安全 |移动电邮 |招标 产品评测: 邮件系统 |反垃圾邮件 |邮箱 |安全 |客户端 |