[Ayuda] Ayuda con shell script

mario benitez mario en cancun.com
Jue Mar 14 15:55:32 CST 2002


que tal linuxeros,

Tengo un problema con un shell script. Todo el contexto esta mas o menos asi:

en maillog, tengo miles de entradas como la siguiente:

sendmail[11871]: g2B1WpE11871: <global en cancun.com>... User unknown
sendmail[11898]: g2B1XmE11898: <shaman en cancun.com>... User unknown
sendmail[12035]: g2B1aLE12035: <supervac en cancun.com>... User unknown
sendmail[12035]: g2B1aLE12035: <suntour en cancun.com>... User unknown
sendmail[12422]: g2B1kiE12422: <dominos en cancun.com>... User unknown
sendmail[12849]: g2B1x3E12849: <hhda en cancun.com>... User unknown
sendmail[13241]: g2B2CUE13241: <jema en cancun.com>... User unknown
sendmail[13599]: g2B2O0E13599: <ome en cancun.com>... User unknown

osciosamente, con grep y cut (muy basicamente) logre, primero obtener los id's pasandolos a un archivo, posteriormente, vuelvo a comparar estos id4s contra el maillog, obteniendo nuevamente la ip (from=, relay=) desde donde se hacen estos intentos. Resultando en un nuevo archivo:

64.80.64.172
64.8.208.227
64.83.222.17
65.119.83.34
65.171.144.14
65.171.144.99
65.54.195.212
65.89.250.74
66.0.15.179
66.136.215.113
66.181.128.7

con el siguiente script (que es donde necesito la ayuda :), trato de analizar el archivo que tiene los ip's para ver cuantos son el numero de intentos de encontrar (or whatever) a un usuario en el server desde dichos ip's.

-----------
#! /bin/bash

# /tmp/violators_ip_all contiene todos los ips que fueron filtrados
echo "" > /tmp/violators_insistence # almacena el no. de insistencias por ip
echo "" > /tmp/violators_bloqued    # genera file p/bloquear c/iptables

$ip_violator = 0.0.0.0
$counter = 1
$max_insistence = 5

for i in `cat /tmp/violators_ip_all`
    do if [$ip_violator -eq $i]
       then
          counter = counter + 1
       else
          if [$counter -gt $max_insistence]
          then
             echo "$ip_violator, $counter" >> /tmp/violators_insistence
             echo "$ip_violator ..."
#            echo "iptables -A -s $ip_violator -d localhost DROP" >> /tmp/violators_bloqued
             echo "aqui van los iptables ..."
          else
             counter = 1
             ip_violator = "$i"
          fi
     fi
    done

-----------
al correr el script me manda el siguiente error:

aqui van los iptables ...
/spammers_insistence: [: missing `]'
 ...
aqui van los iptables ...
/spammers_insistence: [: missing `]'
 ...
aqui van los iptables ...
/spammers_insistence: [: missing `]'
 ...

Alguna idea?????, la verdad ando perdido en bash programming, pero con lo poco que he revisado, no encuentro error. Gracias de antemano.

Saludos

Marinho.-


Más información sobre la lista de distribución Ayuda