・原因はpingにあり!
既に書きましたように、RedHat Linux 7.3にNetSaintをインストールするとき、./configure
の途中で処理が止まってしまいます。
これは、iputils-20020124-3のバージョンでpingのsyntaxが変更となり、NetSaintがpingから返されるメッセージをパースできないためです。
RedHat Linux 7.2でpingした場合、応答がある場合には次のように返ってきます。
# ping -c 1 192.168.0.1
PING 192.168.0.1 (192.168.0.1) from 192.168.0.12 : 56(84) bytes of data.
64 bytes from 192.168.0.1: icmp_seq=0 ttl=255 time=732 usec
--- 192.168.0.1 ping statistics ---
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max/mdev = 0.732/0.732/0.732/0.000 ms
|
そして、RedHat Linux 7.3の場合には、次のように返ってきます。
# ping -c 1 192.168.0.1
PING 192.168.0.1 (192.168.0.1) from 192.168.0.11 : 56(84) bytes of data.
64 bytes from 192.168.0.1: icmp_seq=1 ttl=255 time=0.675 ms
--- 192.168.0.1 ping statistics ---
1 packets transmitted, 1 received, 0% loss, time 0ms
rtt min/avg/max/mdev = 0.675/0.675/0.675/0.000 ms |
赤字の部分に注目してください。
特に最後の行のところで、RedHat Linux 7.2では「 round-trip 」となっているところが、RedHat Linux 7.3では「 rtt 」となっています。
ここがポイントとなります。
また、RedHat Linux 7.2のpingで相手側から応答がない場合には、次のように返ってきます。
# ping -c 1 192.168.168.168
PING 192.168.168.168 (192.168.168.168) from 192.168.0.12 : 56(84) bytes of data.
--- 192.168.168.168 ping statistics ---
1 packets transmitted, 0 packets received, 100% packet loss |
RedHat Linux 7.3の場合は、こうです。
# ping -c 1 192.168.168.168
PING 192.168.168.168 (192.168.168.168) from 192.168.0.11 : 56(84) bytes of data.
--- 192.168.168.168 ping statistics ---
1 packets transmitted, 0 received, 100% loss, time 0ms |
以上で、今回のpingのsyntaxの変更内容がお分かりいただけたかと思います。
この変更に対応するには、以下の3つのファイルの修正が必要となります。
1.netsaint-0.0.7のconfigureファイル
2.netsaint-plugins-1.2.9-4のconfigureファイル
3.netsaint-plugins-1.2.9-4のcheck_ping.cファイル
( ./netsaint-plugins-1.29.-4/plugins にあります。)
今回修正した内容を下記に示します。
1.netsaintのconfigureファイルの修正
赤字の部分が修正箇所です。
基本的には、「^round-trip 」の文字をegrepしているところで、「 |^rtt 」を追加しているだけです。(~_~;)
#re 2002.08.29
elif ping -n -U -c 1 127.0.0.1 2>/dev/null | egrep -i "^round-trip|^rtt" >/dev/null
then
PING_COMMAND="$PATH_TO_PING -n -U -c %d %s"
cat >> confdefs.h <<EOF
#define PING_PACKETS_FIRST "$PING_COMMAND"
EOF
echo " ping syntax... $PATH_TO_PING -n -U -c <count> <host>"
#re 2002.08.29
elif ping -n -c 1 127.0.0.1 2>/dev/null | egrep -i "^round-trip|^rtt" >/dev/null
then
PING_COMMAND="$PATH_TO_PING -n -c %d %s"
cat >> confdefs.h <<EOF
#define PING_PACKETS_FIRST "$PING_COMMAND"
EOF
echo " ping syntax... $PATH_TO_PING -n -c <count> <host>"
#re 2002.0829
elif ping -n 127.0.0.1 -c 1 2>/dev/null | egrep -i "^round-trip|^rtt" >/dev/null
then
PING_COMMAND="$PATH_TO_PING -n %s -c %d"
echo " ping syntax... $PATH_TO_PING -n <host> -c <count>"
#re 2002.08.29
elif ping 127.0.0.1 -n 1 2>/dev/null | egrep -i "^round-trip|^rtt" >/dev/null
then
PING_COMMAND="$PATH_TO_PING %s -n %d"
echo " ping syntax... $PATH_TO_PING <host> -n <count>"
#re 2002.08.29
elif ping -n -s 127.0.0.1 56 1 2>/dev/null | egrep -i "^round-trip|^rtt" >/dev/n
ull
then
PING_COMMAND="$PATH_TO_PING -n -s %s 56 %d"
echo " ping syntax... $PATH_TO_PING -n -s <host> 56 <count>"
#re 2002.08.29
elif ping -n -h 127.0.0.1 -s 56 -c 1 2>/dev/null | egrep -i "^round-trip|^rtt" >/dev/null
then
PING_COMMAND="$PATH_TO_PING -n -h %s -s 56 -c %d"
echo " ping syntax... $PATH_TO_PING -n -h <host> -s 56 -c <count>"
#re 2002.08.29
elif ping -n -s 56 -c 1 127.0.0.1 2>/dev/null | egrep -i "^round-trip|^rtt" >/de
v/null
then
PING_COMMAND="$PATH_TO_PING -n -s 56 -c %d %s"
cat >> confdefs.h <<EOF
#define PING_PACKETS_FIRST "$PING_COMMAND"
EOF
echo " ping syntax... $PATH_TO_PING -n -s 56 -c <count> <host>"
#re 2002.08.29
elif ping -n -c 1 127.0.0.1 2>/dev/null | egrep -i "^round-trip|^rtt" >/dev/null
then
PING_COMMAND="$PATH_TO_PING -n -c %d %s"
cat >> confdefs.h <<EOF
#define PING_PACKETS_FIRST "$PING_COMMAND"
EOF |
2.netsaint-pluginsのconfigureファイルの修正
この場合も、「^round-trip 」の文字をegrepしているところで、「 |^rtt 」を追加しているだけです。(~_~;)
#re 2002.08.29
elif ping -n -c 1 127.0.0.1 2>/dev/null | egrep -i "^round-trip|^rtt" >/dev/null
then
PING_COMMAND="$PATH_TO_PING -n -c %d %s"
cat >> confdefs.h <<EOF
#define PING_PACKETS_FIRST "$PING_COMMAND"
EOF
echo " ping syntax... $PATH_TO_PING -n -c <count> <host>"
#re 2002.08.29
elif ping -n 127.0.0.1 -c 1 2>/dev/null | egrep -i "^round-trip|^rtt" >/dev/null
then
PING_COMMAND="$PATH_TO_PING -n %s -c %d"
echo " ping syntax... $PATH_TO_PING -n <host> -c <count>"
#re 2002.08.29
elif ping 127.0.0.1 -n 1 2>/dev/null | egrep -i "^round-trip|^rtt" >/dev/null
then
PING_COMMAND="$PATH_TO_PING %s -n %d"
echo " ping syntax... $PATH_TO_PING <host> -n <count>"
#re 2002.08.29
elif ping -n -s 127.0.0.1 56 1 2>/dev/null | egrep -i "^round-trip|^rtt" >/dev/n
ull
then
PING_COMMAND="$PATH_TO_PING -n -s %s 56 %d"
echo " ping syntax... $PATH_TO_PING -n -s <host> 56 <count>"
#re 2002.08.29
elif ping -n -h 127.0.0.1 -s 56 -c 1 2>/dev/null | egrep -i "^round-trip|^rtt" >
/dev/null
then
PING_COMMAND="$PATH_TO_PING -n -h %s -s 56 -c %d"
echo " ping syntax... $PATH_TO_PING -n -h <host> -s 56 -c <count>"
#re 2002.08.29
elif ping -n -s 56 -c 1 127.0.0.1 2>/dev/null | egrep -i "^round-trip|^rtt" >/dev/null
then
PING_COMMAND="$PATH_TO_PING -n -s 56 -c %d %s"
cat >> confdefs.h <<EOF
#define PING_PACKETS_FIRST "$PING_COMMAND"
EOF
echo " ping syntax... $PATH_TO_PING -n -s 56 -c <count> <host>"
#re 2002.08.29
elif ping -n -c 1 127.0.0.1 2>/dev/null | egrep -i "^round-trip|^rtt" >/dev/null
then
PING_COMMAND="$PATH_TO_PING -n -c %d %s"
cat >> confdefs.h <<EOF
#define PING_PACKETS_FIRST "$PING_COMMAND"
EOF |
3.netsaint-pluginsのcheck_ping.cファイルの修正
この場合には、正常な応答があった場合と、エラーが返ってきた場合の2箇所に関して修正が必要です。
/* get the percent loss statistics */
if (sscanf (input_buffer, "%*d packets transmitted,
%*d packets received, +%*d errors, %d%% packet loss", &pl)
== 1 ||
sscanf (input_buffer, "%*d packets transmitted,
%*d packets received, %d%% packet loss", &pl) == 1
/* re 2002.09.01 */
||
sscanf (input_buffer, "%*d packets transmitted,
%*d packets received, %d%% loss, time", &pl) == 1 ||
sscanf (input_buffer, "%*d packets transmitted,
%*d received, %d%% loss, time", &pl) == 1
)
continue;
/* get the round trip average */
else
if (sscanf (input_buffer, "round-trip min/avg/max =
%*f/%f/%*f", &rta) == 1 ||
sscanf (input_buffer,
"round-trip min/avg/max/mdev = %*f/%f/%*f/%*f", &rta)
== 1 ||
sscanf (input_buffer,
"round-trip min/avg/max/sdev = %*f/%f/%*f/%*f", &rta)
== 1 ||
sscanf (input_buffer,
"round-trip min/avg/max/stddev = %*f/%f/%*f/%*f", &rta)
== 1 ||
sscanf (input_buffer,
"round-trip min/avg/max/std-dev = %*f/%f/%*f/%*f", &rta)
== 1 ||
sscanf (input_buffer,
"round-trip (ms) min/avg/max = %*f/%f/%*f", &rta)
== 1
/* re 2002.09.01 */
||
sscanf (input_buffer,
"rtt min/avg/max/mdev = %*f/%f/%*f/%*f ms", &rta) == 1
)
continue;
} |
|