長い間(1年間くらい?)ルートサーバーがダウンしていたCFドメイン(中央アフリカ共和国)が、いつの間にか復活していた。実はここのドメインを1つ持っているんだけど、取得したときはルートサーバーが長期間ダウンするなんて考えてもみなかったなぁ。
ちょっと改良。proxyサーバーを経由していたのを、直接接続するようにしてみた。UNIXのPerlでも、気長に待てばSOCKET接続でタイムアウトしてくれるみたいだし。
#!/usr/local/bin/perl
# Usage: is_alive_http.pl server
use strict;
my $host = $ARGV[0] or die;
my $mail = '○○'; # 携帯のアドレス
main();
# ◆
sub main {
if (!is_alive_http($host)) {
print "$host is down\n";
system("echo '$host is down' | mail $mail");
}
}
# ◆
sub is_alive_http {
my $target = shift;
my @result;
my $addr = (gethostbyname($target))[4];
my $name = pack("S n a4 x8", 2, 80, $addr);
socket(SOCKET, 2, 1, 0);
connect(SOCKET, $name) or return 0;
binmode(SOCKET);
select(SOCKET); $| = 1; select(STDOUT);
print SOCKET "OPTIONS * HTTP/1.0\n\n";
@result = <SOCKET>;
close(SOCKET);
return (join('', @result) =~ /200 OK/ ? 1 : 0);
}