Criando entradas para ip fixo no arquivo DHCPD.conf

De gutocarvalho.net

pensando no seguinte causo, alguém solicita que o sysadmin fixe o endereço ip de algumas máquinas, 250 máquinas por exemplo ;)

vamos elaborar um script rapido para resolver esta questão...

primeiro o sysadmin, que não é bobo nem nada, pede que as informações estejam em uma planilha chamada de levantamento.odt, contendo as seguintes informações:

nome do usuario | mac | secretaria | setor | sala | patrimonio

estou pensando em uma maneira simples, existem várias outras abordagens e formas mais eficientes, aqui só dou o exemplo de uma das formas de se fazer com o bom e velho shellscript.

copie e cole o texto o oOo-Calc para um editor de texto puro, por exemplo VIM, substituia TAB por * usando o comando abaixo, se for o VIM.

:%s/^I/*/gc

Esse ^I é o valor que aparece quando voce digita o TAB ali naquele local.

salve como levantamento.txt

o arquivo vai ficar assim

jose.carvalho*00:00:00:00:00:00*spoa*cgmi*001*000001
guto.carvalho*00:00:00:00:00:00*spoa*cmsr*002*000002

agora vamos elaborar um script que vai gerar a entrada para o DHCPD.CONF

crie um arquivo chamado geraDhcp.sh com o conteúdo abaixo:

gutocarvalho@defiant:~$ vim geraDhcpd.sh

#!/bin/bash

# variaveis/constantes

# arquivo com informacoes
fileIn="levantamento.txt"

# arquivo que sera gerado
fileOut="levantamento-dhcpd.txt"

# classe
ipClass="192.168.0"

# ip que vai iniciar
ipRefer="1"

# funcao que vai gerar as entradas

geraCorpo()
{
for i in `cat $fileIn`;do
        nome=$(echo $i |cut -d* -f1)
        macaddr=$(echo $i |cut -d* -f2)
        secretaria=$(echo $i |cut -d* -f3)
        setor=$(echo $i |cut -d* -f4)
        sala=$(echo $i |cut -d* -f5)
        patrimonio=$(echo $i |cut -d* -f6)
        echo "  # usuario $nome, sala $sala, secretaria $secretaria, setor $setor, patrimonio $patrimonio" |tee -a $fileOut
        echo "  # criado por: tecguto" | tee -a $fileOut
        echo "  host $secretaria$setor$patrimonio {" |tee -a $fileOut
        echo "          hardware ethernet $macaddr;" |tee -a $fileOut
        let ipRefer++
        echo "          fixed-address $ipClass.$ipRefer;" |tee -a $fileOut
        echo "  }" |tee -a $fileOut
        echo -e "\n" |tee -a $fileOut
done
}

geraCorpo

salve o arquivo, e vamos rodá-lo.

gutocarvalho@defiant:~$ bash geraDhcp.sh

a saída será esta

        # usuario jose.carvalho, sala 001, secretaria SPOA, setor CGMI, patrimonio 000001
        # criado por: tecguto
        host SPOACGMI000001 {
                hardware ethernet 00:00:00:00:00:00;
                fixed-address 192.168.0.1;
        }

        # usuario guto.carvalho, sala 002, secretaria SPOA, setor CMSR, patrimonio 000002
        # criado por: tecguto
        host SPOACMSR000002 {
                hardware ethernet 00:00:00:00:00:00;
                fixed-address 192.168.0.2;
        }

tarefa finalizada.

Ferramentas pessoais