二回も遭遇したのでメモとして書いとく。 原因は ipv6 を用いて通信しようとしてしまうため。ipv6が正常に使えるなら問題なし。 でも、whois するサーバが ipv6 に対応してない、または通信の経路でipv6通信に失敗する環境だとエラーが起きる。
patch を当ててコンパイルして直します。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
cd /usr/local/src/ | |
wget http://ftp.de.debian.org/debian/pool/main/j/jwhois/jwhois_4.0.orig.tar.gz | |
tar xzvf jwhois_4.0.orig.tar.gz | |
cd jwhois-4.0/ | |
wget http://www.fukatani.org/~hi-lo/blog/archives/upload_data/jwhois-4.0-fix-ipv6socket.patch | |
patch -p1 < jwhois-4.0-fix-ipv6socket.patch | |
mkdir /usr/local/jwhois | |
./configure --prefix=/usr/local/jwhois/ | |
make -j4 | |
make install | |
/usr/local/jwhois/bin/whois topotal.com | |
which whois | |
ll /usr/bin/whois | |
mv /usr/bin/whois{,.`date +%Y%m%d`} | |
ln -s /usr/local/jwhois/bin/jwhois /usr/bin/whois | |
whois topotal.com |
参考: 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;
}
ついでに、監視プラグインも修正した。
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 }'`