Makotaum's Blog

Um local para compartilhar problemas e soluções técnicos enfrentados no dia a dia

Shell script e mysql

Posted by makoto on November 5, 2009

Usando a script do post anterior, podemos usar o arquivo gerado (dchpeditado) para povoar automaticamente nossa base de dados.

—— script2.sh ———

#!/bin/bash
#################################################################
#Script que povoa o banco de dados usando o arquivo dhcpeditado #
#################################################################

#escolho o delimitador
IFS=” “

echo “Escreva o nome da base de dados “
read database

echo “Escreva o nome da tabela “
read tabela

echo “Escreva o nome do usuário da base de dados “
read user

#no nosso caso, nossa tabela era formada por 3 colunas :
# host mac ip
#então, para cada linha do arquivo dhcpeditado, jogamos em sua respectiva coluna do banco de dados
while read host mac ip
do
echo “HOST = $host “
echo “MAC  = $mac  “
echo “IP   = $ip   “
#envio para o banco de dados com o parâmetro -e “comando” “base de dados”
mysql -u $user -e “insert into $tabela values(‘$host’,'$mac’,'$ip’)” -f $database

#essas linhas usamos para automatizar as configurações do mac filter
#echo “#$host” >> plus_arp.conf
#echo “arp -S $mac $ip” >> plus_arp.conf
#echo “#$host” >> plus_ipfw.conf
#echo “ipfw add allow from $ip to any” >> plus_ipfw.conf
#echo “ipfw add allow from any to $ip” >> plus_ipfw.conf
done < dhcpeditado

—— script2.sh ———

Para o shell “conversar” com o mysql, usamos o comando:
mysql -u <usuario> -p<senha> -e “<comando>” -f <base_de_dados>

Onde por segurança, para não deixar a senha visível no histórico do shell ou em processos, pode-se editar o my.cnf e lá delimitar a senha, assim pode-se emitir o campo da senha no comando acima.
O -f é útil caso o comando encontre algum problema do tipo, dado já existente na tabela, que faria com que o comando parasse. Com o -f, ele irá ignorar o problema e continuar com o comando.

Leave a Reply

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <pre> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>