De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.
Colaboração: Eduardo Bernardino
Data de Publicação: 26 de August de 2008
Espero que eu não seja o único preguiçoso, que não gosta de ficar configurando
um servidor DHCP, prendendo os MACs com os IP s. Por achar que não estou
sozinho nesta empreeitada criei um script que busca os computadores na rede
através do programa nbtscan, que é um scanner de netbios, onde ele mostra o
nome, IP e Mac dos computadores de sua rede, montando uma tabela pra você.
O script que denominei como Autodhcpd.sh, filtra estas informações do nbtscan
e formata as entradas do seu arquivo dhcpd.conf, gerando um servidor DHCP com
configurações básicas e com todos os hosts de sua rede presos por endereço
MAC, aumentado assim a organização e segurança de sua rede.
Instalação no Debian, que é a distribuição que uso:
#apt-get install nbtscan
Modos de utilização do comando:
#nbtscan -r 192.168.1.0/24 #nbtscan 192.168.1.25-137
Onde a saída vai ser algo deste tipo:
#nbtscan 192.168.1.1 Doing NBT name scan for addresses from 192.168.1.1 IP address NetBIOS Name Server User MAC address 192.168.1.1 Fulano-Machine Fulano 00:00:00:00:00:00
Funcionamento básico do Script:
O nbtscan, que você terá que instalar previamente, busca os hosts da rede
e gera uma tabela como expliquei acima, depois de gerada ele filtra o que
interessa e começa a alimentar o seu novo dhcpd.conf, por isso aconselho vocês
a fazer um backup do antigo, o que ele não conseguir scanear irá informar,
tentando outro método para descobrir o endereço MAC.
#!/bin/bash
#
# CRIADO : 01 de Agosto de 2008
# AUTORES : Eduardo de Souza B. da Silva
# Ricardo Caldas Santos
# DESCRIÇÃO : Gerador de arquivos dhcpd.conf
# LICENÇA : GPL v2
# VERSÃO : 0.1
#
filterip=`echo ${1:0:7}`
iplocal=`ifconfig | tr -s | grep end.: | cut -d -f4| head -n1`
nbtscan $1 | egrep $filterip | tr -s | sed s/ // |cut -d -f1,2,4 | sed /Doing NBT scan/d > dhcp.temp
sed -i / $iplocal /d dhcp.temp
#
echo -n Entre com o valor para default-lease-time: ; read dlt
echo -n Entre com o valor para max-lease-time: ; read mlt
echo -n Entre com o valor para option subnet-mask: ; read subnet
echo -n Entre com o valor para option broadcast-address: ; read broad
echo -n Entre com o valor para option routers: ; read router
echo -n Entre com o valor para option domain-name-servers : ; read names
echo -n Entre com o valor para option domain-name: ; read name
#
echo default-lease-time $dlt ; >> dhcpd.conf
echo max-lease-time $mlt ; >> dhcpd.conf
echo option subnet-mask $subnet ; >> dhcpd.conf
echo option broadcast-address $broad ; >> dhcpd.conf
echo option routers $router ; >> dhcpd.conf
echo option domain-name-servers $names ; >> dhcpd.conf
echo option domain-name \ "$name \ " ; >> dhcpd.conf
echo >> dhcpd.conf
#
mac_inv()
{
echo O computador $name com o seguinte IP $ip não pode ser cadastrado no arquivo, pois não foi possível capturar o seu MAC.
echo Tentando descobrir o endereço MAC, aguarde por favor
ping -c 1 $ip >> /dev/null
if [ $? -eq 0 ]
then
mac=`arp -a | grep $ip | cut -d -f4`
mac_val
echo Computador cadastrado com sucesso
echo
else
echo Não foi possível determinar o endereço MAC
echo Você pode utilizar este IP para descobrir o endereço MAC através de tabela ARP ou scanner de rede.
echo
fi
}
#
mac_val()
{
echo host $name { >> dhcpd.conf
echo hardware ethernet $mac ; >> dhcpd.conf
echo fixed-address $ip ; >> dhcpd.conf
echo } >> dhcpd.conf
echo >> dhcpd.conf
}
#
count=`wc -l dhcp.temp | cut -d -f1`
#
while [ $count -gt 0 ]
do
ip=`cat dhcp.temp | cut -d -f1 | head -n $count | tail -n 1`
name=`cat dhcp.temp | cut -d -f2 | head -n $count | tail -n 1`
mac=`cat dhcp.temp | cut -d -f3 | head -n $count | tail -n 1`
if test $mac = 00:00:00:00:00:00
then
mac_inv
else
mac_val
fi
#
let count = count -1″
done
echo O arquivo dhcpd.conf foi salvo em `pwd`
Bom espero que gostem e que seja útil Ahhh aguardo sugestões no script, pois não sou muito bom em programar Valeu.
Eduardo de Souza Bernardino da Silva - ostrecosdeti.com.br