whois が [Unable to connect to remote host] なのを直す


二回も遭遇したのでメモとして書いとく。

原因は ipv6 を用いて通信しようとしてしまうため。ipv6が正常に使えるなら問題なし。
でも、whois するサーバが ipv6 に対応してない、または通信の経路でipv6通信に失敗する環境だとエラーが起きる。

patch を当ててコンパイルして直します。

whois のソースはここ

参考: パッチの内容

$ cat jwhois-4.0-fix-ipv6socket.patch
diff -ur jwhois-4.0/src/utils.c jwhois-4.0-dn/src/utils.c
--- jwhois-4.0/src/utils.c 2007-06-26 03:00:20.000000000 -0400
+++ jwhois-4.0-dn/src/utils.c 2008-05-20 07:56:42.000000000 -0400
@@ -288,7 +288,7 @@
retlen = sizeof(retval);
error = getsockopt(sockfd, SOL_SOCKET, SO_ERROR, &retval, &retlen);
- if (error < 0 || retval)
+ if (error == 0 && retval == 0)
{
break;
}

ついでに、check_domain.sh も直した。

cp -a /usr/lib64/nagios/plugins/check_domain.sh{,.`date +%Y%m%d`}
vim /usr/lib64/nagios/plugins/check_domain.sh
$ diff /usr/lib64/nagios/plugins/check_domain.sh{,.`date +%Y%m%d`}
91c91
< expiration=`$whois $host $domain | awk '/Expiration Date:/ { print $5 }'`
---
> expiration=`$whois $host $domain | awk '/Expiration Date:/ { print $3 }'`

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

Time limit is exhausted. Please reload CAPTCHA.