Cadastro automatizado para DHCP, Sarg, ethers e hosts

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

[ Hits: 3.957 ]

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

Validação de endereços IPv4

Script Nagios

Trocar string A por string B em vários arquivos

WallpaperID - papel de parede com IP e kernel do usuário

Instalador de Código Fonte - Linha de Comando


  

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