Я обычно работаю как минимум с двумя десятками серверов в неделю. Я подумал, что было бы неплохо создать скрипт, который будет запрашивать каждый из них и определять, «они» или нет.
- Серверы работают на Apache2 или IIS7.
- Хостинг провайдеры различаются
- На каждом сервере обычно несколько сайтов
- Настройки противоречивы, при обращении к ip не всегда есть страница apache "hello world" по умолчанию.
- Все сайты являются виртуальными хостами
Я подумал, будет ли лучший способ определить, работают ли они, просто взять по одному сайту с каждого сервера и сделать запрос HTTP HEAD, чтобы убедиться, что ответ от сервера - 200 OK? Очевидно, это будет склонно к «ложному срабатыванию», если:
- Конфигурация / настройка сайта неправильно возвращает 200 OK, когда он должен вернуть код ошибки 4xx
- Если конфигурация отдельного сайта (
<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, но этот вопрос должен обсуждать только логику.