Dziwna sytuacja występuje po około godzinie działania, a mianowicie, skrypt przestaje realizować powierzone zadania. Skrypt nie zgłasza żadnych błędów ani nic, działa cały czas tylko przestaje realizować czynności mu powierzone. Może orientujecie się dlaczego tak się dzieję?
Oto ten skrypt:
Kod: Zaznacz cały
#!/bin/bash
DHCPDLEASES="/var/lib/dhcp/dhcpd.leases"
touch "$DHCPDLEASES"
exec 0< "$DHCPDLEASES"
toupper() # funkcja zamieniająca małe znaki na wielki
{
local char="$*"
out=$(echo $char | tr [:lower:] [:upper:])
local retval=$?
echo "$out"
unset out char
return $retval
}
# go to the end of file
while read line; do
true;
done
# process new entries
while true; do
if read line; then
# ...
# echo "LINE: $line"
zmienna4=$zmienna4`echo $line | grep 'lease' | awk '{print $2}'` # wyciągamy adres ip
zmienna2=$zmienna2`echo $line | grep 'state'| awk '{print $3}'| cut -c 1-6` #wyciągamy status
zmienna3=$zmienna3`echo $line | grep 'hardware' | awk '{print $3}' | cut -c 1-17` #wyciągamy adres mac
zmienna3=$(toupper $zmienna3) #sprawiamy by adres mac miał wielki znaki
zmienna3=`echo $zmienna3 | tr -s : -`
zmienna="Line: $zmienna4 $zmienna2 $zmienna3" #do zmiennej przypisujemy adres ip, stan oraz oadres mac
ip=`echo "$zmienna " | grep 'Line' | awk '{print $2 } '`
if [ $ip <> " " ]
then
state=`echo "$zmienna " | grep 'Line' | awk '{print $3}'`
if [ $state <> " " ]
then
mac=`echo "$zmienna " | grep 'Line' | awk '{print $4}'`
if [ $mac <> " " ]
then
echo "$zmienna"
zmienna4=" ";
zmienna3=" ";
zmienna2=" ";
if [ $state == "free;" ]
then
iptables -D FORWARD --source $ip -j ACCEPT #usuwamy regułę
iptables -D FORWARD --destination $ip -j ACCEPT #usuwamy regułę
iptables -I FORWARD --source $ip -j DROP
iptables -I FORWARD --destination $ip -j DROP
else
echo "update radacct set framedipaddress = '$ip' where acctstoptime IS NULL and callingstationid = '$mac' " | mysql -u root -pzaq12wsx radius
iptables -D FORWARD --source $ip -j DROP
iptables -D FORWARD --destination $ip -j DROP
iptables -I FORWARD --source $ip -j ACCEPT
iptables -I FORWARD --destination $ip -j ACCEPT
fi
fi
fi
fi
#-------------------------------------------------------
else
zmienna4=" ";
zmienna3=" ";
zmienna2=" ";
sleep 0.01
fi
done