#!/bin/sh
# lock clients by MAC address
# Usage: add CLIENT[$i] to the array taken as output from "arp -a";
# have phun ;]
# First we set a 
# Jul 19 2005

# range of ips with our clients needed
# because we need to set a static non existent MAC address to all unused ips
# prevents someone to change his ip on ip that didn't have ethernet record setupped 
IP_RANGE="10.10.10.0";
# Address of our router
GW_ADDRS="10.10.10.1";

# output taken from arp table
CLIENT[0]="dido (10.10.10.17) at 00:50:FC:8D:4C:DD [ether] on eth1";
CLIENT[1]="adsl (192.168.1.1) at 00:D0:D0:5F:5C:77 [ether] on eth0";
CLIENT[2]="milen (10.10.10.19) at 00:C0:F0:54:53:60 [ether] on eth1";
CLIENT[3]="georgi (10.10.10.16) at 00:C0:F0:68:24:7B [ether] on eth1";
CLIENT[4]="bobb (10.10.10.20) at 00:04:61:49:D2:38 [ether] on eth1";
CLIENT[5]="nina (10.10.10.10) at 00:C0:F0:49:9D:CE [ether] on eth1";
CLIENT[6]="vanko (10.10.10.8) at 00:C0:F0:68:4B:3C [ether] on eth1";
CLIENT[7]="angel (10.10.10.12) at 00:C0:F0:48:60:1C [ether] on eth1";
CLIENT[8]="plamen (10.10.10.60) at 00:12:F0:4F:11:EF [ether] on eth1";
CLIENT[9]="admin (10.10.10.13) at 00:C0:F0:49:9D:D0 [ether] PERM on eth1";
CLIENT[10]="laptop (10.10.10.14) at 00:03:47:92:2E:49 [ether] on eth1";
CLIENT[11]="fax (10.10.10.2) at 00:C0:F0:68:79:49 [ether] on eth1";
#CLIENT[12]="";
#CLIENT[13]="";
#CLIENT[14]="";

for i in $(seq 0 255); do
CUR_IP=$(echo $IP_RANGE | sed -e "s/\.0/\.$i/g");

if [[ ${CUR_IP} != ${GW_ADDRS} ]]; then
echo "arp -s $CUR_IP FF:FF:FF:FF:00"
arp -s $CUR_IP FF:FF:FF:FF:00:00
fi

done

for i in $(seq 0 $((${#CLIENT[@]} - 1))); do

CLIENT_IP=$(echo ${CLIENT[$i]} | awk '{ print $2 }'|sed -e "s#(##g" -e "s#)##g");
CLIENT_MAC=$(echo ${CLIENT[$i]} | awk '{ print $4 }');
echo "arp -d $CLIENT_IP";
echo "arp -s $CLIENT_IP $CLIENT_MAC";
arp -d $CLIENT_IP;
arp -s $CLIENT_IP $CLIENT_MAC;

done

# _EOF_
