使用批处理文件检查服务器是否正常运行?

5

我需要检查服务器是否正常运行?如果宕机,我需要发送一封电子邮件,并且这个任务应该每30分钟重复执行。

我必须使用批处理文件来完成此操作。


“服务器已启动”是指物理或虚拟机器已经开机并且能够响应网络请求,还是指像Web服务器或应用服务器正在运行等其他情况? - DMKing
两者都可以。无论是物理上还是响应网络请求。 - Rites
4个回答

8
这个批处理文件将帮助您完成大部分工作。您需要使用blat或类似的Windows脚本来发送电子邮件。请使用任务计划程序每30分钟调用批处理文件。
checkserver.bat:
@echo off
ping -n 1 %1 > NUL
IF ERRORLEVEL 0 (echo "Up -- Don't send email.") ELSE echo "Down -- Send email."

这样调用:

C:\>checkserver 127.0.0.1  
"Up -- Don't send email."

C:\>checkserver 128.0.0.1  
"Down -- Send email."

非常感谢。你能否建议我一些方法来检查应用服务器是否正常运行?我的意思是检查像http://IP:9001这样的HTTP请求吗? - Rites
%errorlevel% 无法与 ping 命令一起使用。当您收到 Reply from ... host unreachable 的消息时,%errorlevel% 仍然为0。 - mivk
哇,这篇帖子好像已经有10年了。不管怎样,我当时发布的内容对于这个人所问的问题是有效的,否则我就不会发表这个回复了。我不知道它是否仍然有效。无论如何,这个人并没有询问如何处理“主机不可达”的问题。 - DMKing

0

如果您知道其IP地址,可以尝试访问其中一个文件系统共享或ping它。这将是最简单的方法,两者都可以通过CMD完成。


我知道IP地址,也可以ping通,但如何确认ping成功呢? - Rites

0

要检查服务器是否在线,您可以使用 ping 命令。要发送电子邮件,您可以下载像 blat 等邮件工具。如果需要每30分钟执行一次,请设置任务计划程序。


如果ping成功了,我该如何识别它? - Rites
ping 命令会返回某个布尔值吗? - Rites
在命令行上手动执行ping,然后检查其%errorlevel%。 - ghostdog74
你能建议一下我如何测试一个HTTP请求或某个应用服务器是否正常运行,例如http://IP:9001/? - Rites

-1

您可以检查机器是否回复ping。但是因为Windows上的ping不会返回有用的%errorlevel%,所以您需要通过find将其输出导入。

例如:

ping -4 -n 2 YourIPorHostname | find "TTL=" >NUL && echo OK

或者

ping -4 -n 2 YourIPorHostname | find "TTL=" >NUL || echo No reply

发送电子邮件需要一些额外的程序。
(如果您的网络上还有一台Unix机器,那么从那里发送电子邮件会更容易,因为“crontab”调度程序会自动发送电子邮件。)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接