Firewall com base de dados Mysql [RESOLVIDO]

1. Firewall com base de dados Mysql [RESOLVIDO]

Diego Pereira Grassato
dtux

(usa Slackware)

Enviado em 19/02/2010 - 21:31h

Olá! Estou tentando fazer a seguinte implementação, gravar os dados de ip e mac no banco de dados mysql, e busca-los usando shell script e fazer o iptables aplicar as regras segundo os dados obtidos,o que está acontecendo é o seguinte o comando que estou utilizando ele me retorna somente um registro queria saber como faço pra q ele me retorne todos o registros da tabela e somento os dados sem as linha do mysql, segue script da tabela e o camando utilizado para obter os dados!

CREATE TABLE `iptables` (
`firewall` int(11) NOT NULL auto_increment,
`tipo` enum('a','b','c') default 'a',
`ip` char(16) default NULL,
`mac` char(18) default '00:00:00:00:00:00',
`nome` varchar(70) default NULL,
`banda` char(10) default NULL,
`data` datetime default NULL,
PRIMARY KEY (`firewall`),
UNIQUE KEY `ip` (`ip`),
UNIQUE KEY `mac` (`mac`)
)

insert into iptables values ("3","a","10.10.10.14","00:00:00:00:00:26","Willi","300","NULL");

Busca os Ips
#####################################
mysql -uroot -panna -t --database "firewall" -e "select ip fro
m iptables where ip != 'NULL';" |sed -n 's/|//g;s/ //g;4p'

##################################
10.10.10.1

ele só esta me retornando o primeito endereço, se eu colocar 5 no lugar do 4 ele me retorna o segundo valor e discrimina o primeiro, eu quero q ele busque todos!!
#####################################
mysql -uroot -panna -t --database "firewall" -e "select ip fro
m iptables where ip != 'NULL';" |sed -n 's/|//g;s/ //g;5p'

##################################
10.10.10.12

Se alguem souber eu agradeço!!!!!



  


2. Re: Firewall com base de dados Mysql [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 19/02/2010 - 23:43h

Eu não entendi bem, mas:

Acho que faltou o curinga * na sua querry e o parametro -s.

A variável DLC, a seguir esta sendo usada como um delimitador de campo. Caso o senhor deseje substituir as 'tabs' que espaçam os dados com [espaço] [ ponto e virgula].
Claro que você pode usar espaço simples ou outro(s) de sua escolha.

#!/bin/bash

DLC=' ;';
HST='localhost';
USR='user';
PWD='123456';
DBN='testes';
SQL='SELECT * FROM iptables'

QUERRY=$(mysql -s\
--host="${HST}"\
--user="${USR}"\
--password="${PWD}"\
--database="${DBN}"\
--execute="${SQL}" |\
sed "s/\t/${DLC}/g");

echo $QUERRY ;



Espero ter ajudado.


3. Consegui

Diego Pereira Grassato
dtux

(usa Slackware)

Enviado em 20/02/2010 - 01:11h

Mais um tempo fuçando e consgui!!! está aí o resultado:
######################################################################################
sql="select ip from iptables where ip != 'NULL';"
rslt=`mysql -uroot -panna -t --database "firewall" -e "$sql" |sed -n 's/|//g;s/-//g;s/ //g;s/+//g;s/ip//g;p' |awk 'NF>0' >file.txt`

for i in `cat file.txt`
do
echo $i

done

O Rsultado esperado seria esse:
10.10.10.1
10.10.10.12
10.10.10.13
10.10.10.14

Flow!!!!



4. Re: Firewall com base de dados Mysql [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 20/02/2010 - 01:25h

Entendi: só o ip... Então troque o curinga * por `ip` e acrescente o parametro --silent ou -s... e o use como um shell script mesmo.

Só fiz assim para ficar um pouco mais pratico de usar.