Bom dia. Você sabe o que quer dizer "tail -n 0"? sds Eric On Sex 3/07/09 16:59 , Daniel Fernando Coimbra ruf...@gmail.com sent: Olá pessoal, estou fazendo um pequeno script para monitorar as entradas de log feitas pelo iptables. Quando executo o script para testar nos logs já existentes (removendo o "tail" e complementando o "grep" com o caminho do arquivo) a execução é perfeita e me dá as informações como esperado. No entanto, ao executá-lo como segue abaixo, para que a monitoração seja em "tempo real" não há qualquer saída, embora os logs estejam sendo modificados. Não há qualquer aviso de erros na execução e não faço idéia do que pode estar errado! Os logs estão sendo gerados e contém as strings "Firewall - ${INFO}:", suspeito que o meu uso do "tail -f" esteja errado mas não consegui descobrir qual seria a correção... Agradeço muito se puderem me auxiliar. (o arquivo color-definitions.sh contém apenas definição de variáveis com strings de cores e por isso não o inclui) ---- monitor.sh ---- source color-definitions.sh U='e[4m' sudo echo "Iniciando Monitor... `date`" || exit 1 sudo tail -n 0 --follow=name /var/log/syslog | grep Firewall | while read Mon Day Time Host lixo lixo lixo LOGNAME DEV_IN DEV_OUT MAC SRC DST LEN TOS PREC TTL ID LINELOG do TIMELINE=" @$Time-$Day/$Mon" PROTO=`echo $LINELOG | cut -d= -f2 | cut -d' ' -f1` S=`echo $SRC | cut -d= -f2` SP=`echo $LINELOG | cut -d= -f3 | cut -d' ' -f1` D=`echo $DST | cut -d= -f2 | cut -d' ' -f1` DP=`echo $LINELOG | cut -d= -f4 | cut -d' ' -f1` LINE=$(echo $LINELOG | cut -d= -f6- | cut -d' ' -f2 | tr -d ' ') case $LOGNAME in 'PING:') if [ "$S" == "192.168.0.1" ] then C=$LGREEN else C=$YELLOW fi echo -e "${RED}PING${NORM} from ${C}${S}${NORM}$TIMELINE" ;; 'SPOOFING:') echo -e "${YELLOW}${U}SPOOFING${NORM} $S:$SP:$DP:D ${LINE}$TIMELINE" ;; 'INPUT:') if [ "`echo $D | cut -d. -f4`" == "255" ] then if [ "$S" == "0.0.0.0" ] then S=`echo $MAC | cut -d: -f7-` fi MSG="${BROWN}BROADCAST${NORM} from ${U}${S}" else MSG="${BLUE}INPUT${NORM} from ${U}${S}" fi echo -e "${MSG}${NORM} ${PROTO} ${YELLOW}${SP}${NORM}:${YELLOW}${DP}${NORM} ${LINE}$TIMELINE" ;; *) echo INVALID ENTRY $LINE $TIMELINE esac done & sudo tail -n 0 --follow=name /var/log/messages | grep Firewall | grep -v sudo | while read Mon Day Time Host lixo lixo lixo LOGNAME DEV_IN DEV_OUT MAC SRC DST LEN TOS PREC TTL ID LINELOG do PROTO=`echo $LINELOG | cut -d= -f2 | cut -d' ' -f1` S=`echo $SRC | cut -d= -f2` SP=`echo $LINELOG | cut -d= -f3 | cut -d' ' -f1` D=`echo $DST | cut -d= -f2` DP=`echo $LINELOG | cut -d= -f4 | cut -d' ' -f1` TIMELINE=" @$Time-$Day/$Mon" LINE=$(echo $LINELOG | cut -d= -f6- | cut -d' ' -f2 | tr -d ' ') if [ "`echo $D | cut -d. -f4`" == "255" ] then MSG="${BROWN}BROADCAST${NORM}" if [ "$S" == "0.0.0.0" ] then S=`echo $MAC | cut -d: -f7-` fi MSG="${MSG} from ${U}${S}" else case $LOGNAME in 'LOCALINPUT:') MSG="LOCAL from ${U}${S}" ;; 'SERVICES:') MSG="${LGREEN}SERVICES${NORM} from ${U}${S}" ;; *) esac fi echo -e "${MSG}${NORM} ${PROTO} ${YELLOW}${SP}${NORM}:${YELLOW}${DP}${NORM} ${LINE}$TIMELINE" done & while : do sleep 6h echo ---- `date` ---- done ---- monitor.sh ----
[As partes desta mensagem que não continham texto foram removidas]