サンプル集  >  bash  >  IP重複チェック
IP重複チェック
2016/03/15

pingとarpを利用してIPの重複チェックができないか試してみます。

◆環境
OS CentOS release 5.8 (Final) Linux localhost.localdomain 2.6.18-308.11.1.el5 #1 SMP Tue Jul 10 08:48:43 EDT 2012 x86_64 x86_64 x86_64 GNU/Linux

任意のIPアドレスにpingを飛ばし、arpテーブルのMACアドレスを抽出します。

IPアドレスが重複している機器がある場合、arpテーブルのMACアドレスがあるタイミングではAと、別のタイミングではBのように変わると予想しています。

簡単なシェルを作成します。 実行した時間が分かるように最初にdateを入れました。

ArpCheck.sh
1: 
2: 
3: 
4: 
5: 
#! /bin/bash
echo "----+----|----+----|----+----|"
date
ping 192.168.0.214 -w3
arp -a | grep "192.168.0.214" 

実行してみます。

# ./ArpCheck.sh
----+----|----+----|----+----|
2016年  3月 25日 金曜日 14:34:57 JST
PING 192.168.0.214 (192.168.0.214) 56(84) bytes of data.
From 192.168.0.100 icmp_seq=2 Destination Host Unreachable
From 192.168.0.100 icmp_seq=3 Destination Host Unreachable
From 192.168.0.100 icmp_seq=4 Destination Host Unreachable

--- 192.168.0.214 ping statistics ---
4 packets transmitted, 0 received, +3 errors, 100% packet loss, time 30
00ms
, pipe 3
? (192.168.0.214) at <incomplete> on eth0

上手く動きました。

10分間隔で実行するようにcrontabに仕込みます。 出力結果をArpCheck.logに吐き出すようにします。

*/10 * * * * /root/WORK/ArpCheck.sh >> /tmp/ArpCheck.log

実行結果を確認します。

# # cat /tmp/ArpCheck.log
----+----|----+----|----+----|
Fri Mar 25 14:50:01 JST 2016
PING 192.168.0.214 (192.168.0.214) 56(84) bytes of data.
From 192.168.0.100 icmp_seq=2 Destination Host Unreachable
From 192.168.0.100 icmp_seq=3 Destination Host Unreachable
From 192.168.0.100 icmp_seq=4 Destination Host Unreachable

--- 192.168.0.214 ping statistics ---
4 packets transmitted, 0 received, +3 errors, 100% packet loss, time 30
00ms
, pipe 3

arpの出力結果が出ていません。

メールを受け取ったので見てみます。

You have new mail in /var/spool/mail/root

メールの内容はmailコマンドで確認できます。

Message 3351:
From root@localhost.localdomain  Fri Mar 25 15:00:04 2016
Date: Fri, 25 Mar 2016 15:00:04 +0900
From: root@localhost.localdomain (Cron Daemon)
To: root@localhost.localdomain
Subject: Cron <root@localhost> /root/WORK/ArpCheck.sh >> /tmp/ArpCheck.
log
Content-Type: text/plain; charset=UTF-8
Auto-Submitted: auto-generated
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/root>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=root>
X-Cron-Env: <USER=root>

/root/WORK/ArpCheck.sh: line 5: arp: command not found

arp command not foundと出ていますね。

▲ PageTop  ■ Home


Copyright (C) 2016 ymlib.com