I've got a script who looks for change of a MAC-address on
LAN cards of my clients and put it in a fail if there is a
change.
Firts I made static ARP table in /etc/ehters it looks like this
-------------
mac address hostname
mac address hostname
-------------
Afer this make arp -s -f
and this is the script
##############################
#!/usr/bin/perl

# catching the info for the MAC addresses
$ipmc = `/sbin/arp -n | grep ether`;

@ipmc = split("\n", $ipmc);

foreach $str (@ipmc) {
  s/\t/ /g;
  @strng = split("  ", $str);
  $ip_mac{$strng[0]} = $strng[2];
}
# Read the file withe the static MAC addresses
$ipmc = `cat  /etc/ethers`;
@ipmc = split("\n", $ipmc);
foreach $str (@ipmc) {
  ($mac_def, $ip_def) = split("\t", $str);
  $ip_fix{$ip_def} = $mac_def;
  $ipfixip{$mac_def} = $ip_def;
}
# Check if there is a difference withe the static ones
# and the real MAC addresses
$set_err = 0;
foreach $ip (sort keys %ip_mac) {
  if ($ip_mac{$ip} ne $ip_fix{$ip}) {
      $ip_lamer{$ip} = $ip_mac{$ip};
      $set_err = 1;
  }
}
# Put it in a fail
if ($set_err ne 0) {
  $dttoday = `date`;
  chop($dttoday);
  open (BADUSER,  ">>/var/httpd/html/private/badusers");
  foreach $ip (sort keys %ip_lamer) {
      $madmac = $ip_fix{$ip};
      print (BADUSER 
"$dttoday\t$ipfixip{$madmac}\t$ip_lamer{$ip}\t$ip\n");
      print  "Defined lame user.\n $dttoday\nFrom:
$ipfixip{$madmac}\nMAC:$ip_lamer{$ip}\nTo: $ip\n";
  }
  close BADUSER;
}
####################################################
That is it.
Sorry 4 my broken english
For me seems everything to be Ok but it's not working :<

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to