LINUX.ORG.RU
ФорумAdmin

php iptables и отключение узеров


0

0

есть скрипт который должен отключать и включать пользователей при достижении определённого лимита трафика, и он это делает но только
работает только с последним ip адресом стоящему последним в правиле ipteibla , а не по всему списку, подскажите где грабли.



#!/usr/local/bin/php

<?
mysql_connect("127.0.0.1","root","");
mysql_select_db("traffic");
$q ="select `lim`, `real`, `ip` from `limita` ";
$r = mysql_query($q);
$i = 0;
$n=mysql_numrows($r);
while($i<$n) {
$real = mysql_result($r,$i,"real");
$lim = mysql_result($r,$i,"lim");
$ip = mysql_result($r,$i,"ip");

// print "\n $real \t $lim \t $ip ";
print "\n $ip ";

$i++;
}

$ipt=exec("iptables -vxn -L test -Z|grep 10.10.2|awk '/10.10.2./{print $9}'|grep 10.10.2");



if ($real >$lim)

{
exec("/usr/local/sbin/iptables -D test -s $ipt -d 0.0.0.0/0 -j ACCEPT");
exec("/usr/local/sbin/iptables -D test -d $ipt -s 0.0.0.0/0 -j ACCEPT");
}

else if ($ip===$ipt)

{
print "\n есть совпадения в таблице,ничего не добавляем \t $ip";
}

else

{
exec("/usr/local/sbin/iptables -A test -s $ip -d 0.0.0.0/0 -j ACCEPT ");
exec("/usr/local/sbin/iptables -A test -d $ip -s 0.0.0.0/0 -j ACCEPT ");
print "в правиле не найден, добавление правила \t $ip";
//print"$ip";
}


mysql_close();

?>

anonymous

> $ipt=exec("iptables -vxn -L test -Z|grep 10.10.2|awk '/10.10.2./{print $9}'|grep 10.10.2");

здесь ты получаешь массив и обрабатывается, естественно, только последнее значени. нужно вывод этой строки обрабатывать именно как массив.

gc
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.