[root@dhcp ~]# sed 's/HOST.*==/HOST derParol==/;/^#\s/d' /usr/libexec/dhcpd/repluggers
#!/bin/bash
POOL=/etc/dhcp/pools.d
LOGDIR=/var/log/dhcpd
LOGSRC=$LOGDIR/server.log # Здесь искать перетыкеров,
LOGDST=$LOGDIR/repluggers.log # а сюда писать результат чистки...
export LANG=ru_RU.UTF-8 # ...по-русски.
while read AbonMAC CircuitID RemoteID; do # Искать ИП в пуле за предыдущую минуту, исходя из свичёвых МАКа и порта.
NAS=`echo $RemoteID | sed 's/^[01]:6://'
`
PORT=`echo "ibase=16; $(echo $CircuitID | sed 's/.*://' | tr [[:lower:]] [[:upper:]])" | bc
`
IP=`grep -B1 "allow members of \"abonents\" \"$NAS/$PORT\"" $POOL/*.conf | head -1 | awk '{print $3}' | tr -d ';'
`
IPS+="$IP $AbonMAC\n"
done < <(awk '/'$(date +%FT%H:%M -d '-1 minute')'.*remote-id.*no free leases/{print $6,$8,$10}' $LOGSRC | sort -u)
while read IP AbonMAC; do # Обнуляем аренды (с выводом в лог, если не на systemd).
LeaseMAC=`/usr/bin/omshell <<-END | awk '/^hardware-address = /{print $3}' | sort -u
key HOST derParol==
connect
new lease
set ip-address = $IP
open
set ends = 00:00:00:00
update
END`
[ ${#IP} -lt 12 ] && TAB='\t' || TAB=
[ "$AbonMAC" != "$LeaseMAC" ] || LeaseMAC="это же устройство"
date +"%F %T $AbonMAC $LeaseMAC $IP" >>$LOGDST
done < <(printf "$IPS" | sort -uV)
а как настроены логи дхцп сервера чтоб он писал option 82 при no free leases ?