você está aqui: Home  → Arquivo de Mensagens

Cadastrando computadores no DHCPD.CONF

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.

Uma prévia do comando nbtscan.

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


Veja a relação completa dos artigos de Eduardo Bernardino

 

 

Opinião dos Leitores

Seja o primeiro a comentar este artigo
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script