descobre o primeiro endereço IP estático não utilizado

0

Eu preciso descobrir dinamicamente o primeiro endereço IP não utilizado em 192.168.0.0/24. Esta é uma pequena rede com um único switch, nenhum host executando qualquer serviço dns ou dhcp. Basicamente, cada host auto atribui um ip estático. Eu preciso de uma maneira (em um arquivo de kickstart RHEL - seção %post ) para descobrir o que é um endereço IP estático disponível e, em seguida, atribuí-lo a mim mesmo.

Isso é o que eu criei até agora:

#!/bin/bash
USED_ADDRESSES_ARRAY=()
for address in 'nmap -sT 192.168.0.0/24 | grep -B1 "Host is up" | grep 192 | awk '{print $5;}' | awk -F "." '{print $4;}''
do
    USED_ADDRESSES_ARRAY+=($address)
done

ip_address_to_assign=0    
for target_address in {1..253}
do
  if [ $target_address  -ne ${USED_ADDRESSES_ARRAY[$target_address - 1]} ]
  then
    ip_address_to_assign=$target_address
    break
  fi
done
echo $ip_address_to_assign
cat > /tmp/output.txt << EOF3
DEVICE="eth0"
'grep HWADDR /etc/sysconfig/network-scripts/ifcfg-em1'
IPV6INIT="no"
NM_CONTROLLED="yes"
ONBOOT="yes"
IPADDR=192.168.0.$ip_address_to_assign
NETMASK=255.255.255.0
GATEWAY=192.168.0.254"
EOF3
cat /tmp/output.txt

Quando eu gosto do que tenho, altero as referências de /tmp/output.txt para apontar para ifcfg-eth0 e solto na seção %post do ks.cfg.

    
por CHK 06.06.2013 / 16:59

1 resposta

1

Você pode simplificar com algo assim:

 for i in {1..253}; do 
  ping -c 1 192.168.0.$i >/dev/null; 
  if [ $? -ne 0 ]; then 
        echo "192.168.0.$i is unused"; 
        break; 
  fi; 
 done
    
por 06.06.2013 / 17:20