0,0 → 1,51 |
#/bin/sh |
# by rexy |
# Ce script permet de déconnecter les usagers dont |
# - les équipementis réseau ne répondent plus |
# - les adresses MAC sont usurpées |
# The aim of this script is to disconnect users whose |
# - PCs are quiet |
# - MAC address are in used by other systems (usurped) |
|
INTIF="eth1" |
PRIVATE_IP="192.168.182.1" |
tmp_file="/tmp/watchdog.txt" |
IFS=$'\n' |
# lecture du fichier contenant les adresses IP des stations muettes |
if [ -e $tmp_file ]; then |
cat $tmp_file | while read noresponse |
do |
noresponse_ip=`echo $noresponse | cut -d" " -f1` |
noresponse_mac=`echo $noresponse | cut -d" " -f2` |
arp_reply=`/usr/sbin/arping -b -I$INTIF -s$PRIVATE_IP -c1 $noresponse_ip|grep response|cut -d" " -f2` |
if [[ $(expr $arp_reply) -eq 0 ]] |
then |
logger "alcasar-watchdog $noresponse_ip ($noresponse_mac) reste muette. On déconnecte." |
/usr/sbin/chilli_query logout $noresponse_mac |
fi |
done |
rm $tmp_file |
fi |
# on traite chaque équipements connus de chilli |
for system in `/usr/sbin/chilli_query list` |
do |
active_ip=`echo $system |cut -d" " -f2` |
active_session=`echo $system |cut -d" " -f5` |
active_mac=`echo $system | cut -d" " -f1` |
# on ne traite que les équipements exploitées par un usager authentifié |
if [[ $(expr $active_session) -eq 1 ]] |
then |
arp_reply=`/usr/sbin/arping -b -I$INTIF -s$PRIVATE_IP -c2 $active_ip|grep response|cut -d" " -f2` |
# on stocke les adresses IP des stations muettes |
if [[ $(expr $arp_reply) -eq 0 ]] |
then |
echo "$active_ip $active_mac" >> $tmp_file |
fi |
# on deconnecte l'usager d'une stations usurpée (@MAC) |
if [[ $(expr $arp_reply) -gt 2 ]] |
then |
logger "alcasar-watchdog : $active_ip est usurpée ($active_mac). On déconnecte." |
/usr/sbin/chilli_query logout $active_mac |
fi |
fi |
done |
Property changes: |
Added: svn:eol-style |
+native |
\ No newline at end of property |
Added: svn:executable |