On Fri, 2006-10-27 at 12:00 +1300, Don Gould wrote:
> Good news!  Last night, with the help of Tusker and Neil I got the 
> iptables stuff logging! :)
> 
> Bad news...  I'm stuck again :)
> 
> I have two issues - GREP IN A SCRIPT, DO WHILE LOOP
> 
> 
> GREP IN A SCRIPT
> 
> The question... how do I script a test?
> 
> if (iptables -L traffic_in  -vn | grep "192.168.3.136") = "" then
>        iptables -A traffic_in -d $3
> end if
> 
Basically you want to test the return value from grep ( man grep )

if ( iptables -L traffic_in  -vn | grep -q "192.168.3.136" ) then
  "192.168.3.136" was found in iptables -L traffic_in  -vn
else
 it wasn't

Dave
> (Yes, this is how I'd think of it in VB)
> 
> The problem... Duplicate records.
> # iptables -A traffic_in -d $3
> 
> This creates a new counter every time the ip is refreshed by dhcp.  So I 
> need to test to see if it's present.
> 
> I understand that I use grep, but I don't know how to code the syntax to 
> test it in a script.
> 
> # iptables -L traffic_in  -vn
> 
> Gives me...
> Chain traffic_in (13 references)
>   pkts bytes target     prot opt in     out     source 
> destination
>   9856 6879K            all  --  *      *       0.0.0.0/0 
> 192.168.3.136
>      0     0            all  --  *      *       0.0.0.0/0 
> 192.168.3.136
>      0     0            all  --  *      *       0.0.0.0/0 
> 192.168.2.130
>   7053  586K            all  --  *      *       0.0.0.0/0 
> 192.168.2.124
> 34918   35M            all  --  *      *       0.0.0.0/0 
> 192.168.3.183
> 
> Which as you can see has duplicate records for 192.168.3.136...
> 
> So at the command line I go ...
> 
> [EMAIL PROTECTED] shared]# iptables -L traffic_in  -vn | grep "192.168.3.136"
>   9856 6879K            all  --  *      *       0.0.0.0/0 
> 192.168.3.136
>      0     0            all  --  *      *       0.0.0.0/0 
> 192.168.3.136
> 
> But how do I script this so I can use it in the batch file...
> 
> if (iptables -L traffic_in  -vn | grep "192.168.3.136") = "" then
>        iptables -A traffic_in -d $3
> end if
> 
> 
> DO WHILE LOOP
> 
> Next I need to collect the traffic information into the database.
> 
> Sudoo code...
> 
> for each line in  iptables -L traffic_in  -vn
>       Ip = $8
>       Data = $2
>       mysql
>               -h bowenvale
>               -u oncs
>               -pbutterfly
>               -e "INSERT INTO oncs.tblData
>                       (IPAddress, DataUsed)
>                       VALUES('$Ip', '$Data');"
> 
> loop
> 
> From:  http://forum.openwrt.org/viewtopic.php?pid=30841
> 
> [EMAIL PROTECTED] shared]# iptables -L traffic_in  -vn | awk '{if 
> (int($1)!=0) print $8"\t"$2}'
> 192.168.2.124   33M
> 192.168.2.148   5140K
> 192.168.3.136   6879K
> 192.168.2.124   721K
> 192.168.3.183   35M
> [EMAIL PROTECTED] shared]#
> 
> This is great, but how do I turn it in to a loop so I can stuff each 
> record into the database?
> 
> TIA
> 
> Cheers Don

Reply via email to