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.