Cadastro automatizado para DHCP, Sarg, ethers e hosts

Publicado por Felipe (última atualização em 09/09/2015)

[ Hits: 3.977 ]

Download 6280.cadastro




Script desenvolvido para receber nome do usuário e endereço MAC para cadastrá-los nos seguintes arquivos:

- /etc/dhcp/dhcpd.conf

Para o correto funcionamento, a parte final do arquivo tem que ser como no exemplo abaixo independente das configurações iniciais:

host Note-branco-vistante-1 { hardware ethernet 30:f9:ed:db:37:50; fixed-address 192.168.0.15; }
host Note-Preto-vistante-2 { hardware ethernet a4:1f:72:fd:40:9f; fixed-address 192.168.0.16; }
}}}

- /etc/ethers

Para o correto funcionamento, o IP deverá ser separado por 1 espaço do MAC, e o MAC de quem ainda não foi cadastrado deverá ser aa:bb:cc:dd:ee:ff (sendo possível alterar no script):

192.168.0.21 aa:bb:cc:dd:ee:ff
192.168.0.22 aa:bb:cc:dd:ee:ff

- /etc/sarg/sarg.usertab
- /etc/hosts

- O IP usado será o próximo disponível no dhcpd.conf (portanto, o dhcpd.conf deverá ter pelo menos 1 cadastro)
- Validador de MAC
- Limitador de IP
- Atualização automática da tabela ARP (arp -f)
- Restart automático do dhcpd (/etc/init.d/isc-dhcp-server restart)

Espero que ajuda alguém e sugestões/críticas são muito bem-vindas.

PAZ!

  



Esconder código-fonte

#!/bin/bash
clear
echo "
##########################################################################
# Autor: Felipe Assunção                                                 #
# Email: felipeassuncaoj@gmail.com                                       #
#                                                                        #
# Script desenvolvido para receber nome do usuário e endereço MAC        #
# para cadastra-los nos seguintes arquivos:                              #
#                                    #
# /etc/dhcp/dhcpd.conf (Distribui IP's automático, amarrando-os nos MAC) #
# /etc/ethers (Amarra IP x MAC)                      #
# /etc/sarg/sarg.usertab (Nome de usuário no relatório SARG)         #
# /etc/hosts (Relaciona nome de usuário ao invés de IP)          #
#                                    #
# - O IP usado será o próximo disponível no dhcpd.conf           #
# - Validador de MAC                             #
# - Limitador de IP                              #
# - Atualização automática da tabela ARP (arp -f)            #
# - Restart automático do dhcpd (/etc/init.d/isc-dhcp-server restart)    #
##########################################################################
"
ip_final_atual=$(cut -d " " -f 8 /etc/dhcp/dhcpd.conf | tr -d ';','}}}' | tail -2 | cut -d "." -f 4)
ip_final_proximo=$(($ip_final_atual+1))
ip_inicio=$(cut -d " " -f 8 /etc/dhcp/dhcpd.conf | tr -d ';','}}}' | tail -2 | cut -d "." -f 1-3)
ip_proximo=$ip_inicio.$ip_final_proximo
valida_mac=0

if [ "$ip_final_proximo" -gt "254" ]; then
    echo
    echo "Endereços IP's esgotados"
    echo
        else
        echo
        echo "Digite o nome do usuário, sem acentuação e/ou espaço - Ex: Jose-Cel, Jose-Note"
        read nome
        echo

while [ "$valida_mac" != "" ]; do

    echo Digite o endereço MAC - Ex: 11:aa:22:bb:33:cc
    read mac

        valida_mac=`echo $mac | sed "s/[0-9\a-f\A-F\:]//g"`;

            if [ "$valida_mac" != "" ]; then
            echo
            echo "Endereço MAC Inválido"
            echo
                else

                tac /etc/dhcp/dhcpd.conf | tail -n +2 | tac > /etc/dhcp/dhcpd.tmp
                echo "host $nome { hardware ethernet $mac; fixed-address $ip_proximo; }" >> /etc/dhcp/dhcpd.tmp
                tail -1 /etc/dhcp/dhcpd.conf >> /etc/dhcp/dhcpd.tmp
                mv /etc/dhcp/dhcpd.tmp /etc/dhcp/dhcpd.conf

                sed -i s/$ip_proximo\ \aa:bb:cc:dd:ee:ff/$ip_proximo\ $mac/g /etc/ethers

                echo $ip_proximo $nome >> /etc/sarg/sarg.usertab

                echo $ip_proximo $nome >> /etc/hosts

                echo
                echo Atualizando tabela ARP...
                arp -f
                echo

                echo Reiniciando servidor DHCP...
                /etc/init.d/isc-dhcp-server restart

                echo
                echo O IP $ip_proximo foi definido para $nome
                echo
            fi

done

fi

Scripts recomendados

Compara igualdade entre arquivos

Administração de Usuários

Atualização automática de data e hora com ntpdate

Calculadora Shell com Yad

Album de fotografias


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts