跳转至

Windows系统下监控Dell服务器硬盘

命令工具参考:PercCli工具

写个脚本(bash)

不会写 CMD(bat)、PowerShell (ps1) 的脚本,这里使用 Gitbash 的模拟工具

这个脚本是在Windows下执行的, 我就直接放在了工具目录: C:\Dell\MonitorDiskForWin.sh

Bash
#!/bin/bash

# 生成硬盘状态文件,方便后续查阅
powershell -Command "C:\Dell\perccli64.exe /call /eall /sall show all logfile=c:\Dell\diskstatus.txt"

hostip="192.168.68.15"
sernum="6FR8GL2"
disknum=8

# hostip="192.168.68.16"
# sernum="6HVDGL2"
# disknum=8

# 发送企业微信告警
send_wechat_alert() {
    local msg="$1"
    local key="61cfc73e-a834-4cd1-9c0e-ddde9c414cc9"
    local url="https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=$key"

    # 使用 printf 将变量嵌入 JSON,再通过管道传给 curl
    printf '{"msgtype":"text","text":{"content":"%s"}}\n' "$msg" | \
    curl -s -X POST -H "Content-Type: application/json" --data-binary @- "$url"
}

online=$(powershell -Command "C:\Dell\perccli64.exe /call /eall /sall show"| grep -c " Onln ")
info=$[ disknum - online ]
send_wechat_alert "Dell服务器,IP:${hostip},列号:${sernum}, 不在线硬盘数${info}"

存好脚本后,在任务计划程序创建一个定时任务,实现定时告警

创建任务

常规:

  • 名称:monitordisk
  • 描述:监控硬盘状态
  • 不管用户是否登录都要运行(我使用的管理员账户)
  • 使用最高权限运行

触发器:

  • 开始任务:按预定计划
  • 设置:每天10:00,每隔1天发生一次
  • 勾选已启用

操作:

  • 操作:启动程序
  • 程序或脚本:浏览脚本路径(C:\Dell\MonitorDiskForWin.sh)

条件:

  • 电源:勾选-只有在计算机使用交流电源时才启动此任务

其它基本默认,可以按需修改