Windows Server 2012 R2,带 GUI、UPS 系统
我正在设置我的第一台服务器。它是一台 Hyper-V 主机,将托管多台 VM 服务器。系统位于 UPS 上。
当 UPS 检测到交流电源故障时,UPS 会通过位于其他地方的 SMTP 邮件服务器发送电子邮件,如果一段时间后电源仍未恢复,则执行正常服务器关闭。当电源恢复时,主机 BIOS 设置为自动重启。
我希望在电源恢复后收到各个服务器重新启动的电子邮件。我的 UPS 在交流电恢复后不会发送电子邮件,但即使它发送了,也不会告诉我服务器已恢复。我希望每台服务器在恢复在线后都发送一封电子邮件。
需要使用哪些步骤/方法来实现这一点?我所说的方法是指我是否需要编写脚本,或者是否有内置工具可以实现这一点,等等?
我有 SMTP 服务器信息、端口、登录凭据等来发送电子邮件,我只是不明白如何让服务器在启动时执行这些操作,或者通常处理此类通知的标准/最佳做法是什么。
谢谢。
答案1
无需编写 Powershell 脚本即可实现此目的的方法之一是使用监控服务。您当前是否设置了任何类型的监控?大多数监控服务都会通知服务器无法访问,然后在服务器恢复时发送“一切正常”电子邮件。我使用过的一些免费开源工具是 Zabbix 和 Nagios。它们可以在安装代理或使用 SNMP 的无代理模式下工作。它们也是 ManageEngine 工具,可免费监控多达 20 台服务器。https://www.manageengine.com/free-windows-health-monitor/free-windows-health-monitor-index.html
我认为这种方法是最好的,因为它还使您能够监控其他关键指标(如果它们尚未被监控)。
答案2
我的建议:
在每个 VM 服务器上创建两个文件:
- 首先,一个 .eml 文件。这是一个用作电子邮件模板的文本文件。在其中填充您希望在特定服务器启动时接收的特定系统信息。该文件应以如下方式开始:
从:[电子邮件保护]
到:[电子邮件保护]
主题:系统启动服务器 nnn
其次,批处理文件用于将 .eml 文件复制到 Exchange 服务器的 pickup 文件夹。pickup 文件夹位于 Exchange 服务器的“C:\Program Files\Microsoft\Exchange Server\V14\TransportRoles\pickup”中。
最后,在每个 VM 服务器上,在任务计划程序 (taskschd.msc) 中创建一个任务,该任务在系统启动时触发,并执行运行上述批处理文件的操作。
我使用这个解决方案是因为我无法让系统事件的电子邮件功能正常工作。Exchange 在 pickup 文件夹中找到 .eml 文件后,会将其发送并从文件夹中删除。因此,对于您想要接收的每封电子邮件,您都需要将 .eml 文件复制到 pickup 文件夹。
希望这可以帮助。
编辑:如果您没有运行 Exchange 服务器,我的想法是使用任务计划程序启动批处理文件并结合此问题https://stackoverflow.com/questions/709635/sending-mail-from-batch-file也能给你期望的结果。