我通常每周处理至少两打服务器。我认为创建一个脚本来查询它们中的每一个并确定它们是否“启动”是一个好主意。
- 服务器运行 Apache2 或 IIS7。
- 托管服务提供商各不相同
- 每台服务器上通常有多个站点
- 设置不一致,当您直接访问 ip 时,并不总是有默认的 apache“hello world”页面。
- 站点都是虚拟主机
我在想,确定它们是否启动的最佳方法是从每台服务器获取一个站点并发出 http HEAD 请求以确保服务器的响应为 200 OK?显然,如果出现以下情况,这很容易出现“误报”:
- 站点配置/设置在应返回 4xx 错误代码时不正确地返回 200 OK
- 如果单个站点 (
<VirtualHost>
) 的配置被禁用,或者该站点已移动到不同的服务器。
但在大多数情况下,一个 HEAD 请求和依赖 200 OK 应该是可靠的,对吧?以及确保域的 A 记录与站点移动时列出的内容相匹配。
伪代码:
import http
list = {
'72.0.0.0' : 'domain.com',
'71.0.0.0' : 'blah.com',
}
serverNames = {
'jetty' : '72.0.0.0',
'bob' : '71.0.0.0'
}
for each ( list as server => domain ) {
headRequest = http.head( domain )
if ( headRequest.response == 200 && http.arecord(domain) == server ) {
print serverNames[server] + ' is up ';
} else {
print 'Server is either down or the site attached to the server lookup has moved.';
}
}
我可能会用 Python 或 PHP 编写脚本,但这个问题只是讨论逻辑。