khám phá địa chỉ IP tĩnh không sử dụng đầu tiên


0

Tôi cần tự động khám phá địa chỉ IP không sử dụng đầu tiên trên 192.168.0.0/24. Đây là trong một mạng nhỏ với một chuyển đổi duy nhất, không có máy chủ nào chạy bất kỳ dịch vụ dns hoặc dhcp nào. Về cơ bản mỗi máy chủ tự gán một ip tĩnh. Tôi cần một cách (trong tệp khởi động của RHEL - %postphần) để tìm ra đâu là địa chỉ IP tĩnh có sẵn, sau đó tự gán nó cho mình.

Đây là những gì tôi đã đưa ra cho đến nay:

#!/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

Khi tôi thích những gì tôi có, tôi sẽ thay đổi các /tmp/output.txttham chiếu để trỏ đến ifcfg-eth0và thả nó vào %postphần của ks.cfg.


Vì vậy, kịch bản của bạn làm việc? Tại sao không? Sản lượng dự kiến ​​là gì và bạn nhận được gì? Nó dường như đang hoạt động hoàn hảo như xa như tôi có thể nói.
terdon

1
Bạn đang phát minh lại DHCP một cách hiệu quả ...
Lee Harrison

Tôi cho rằng một lời giới thiệu phù hợp hơn sẽ là "bạn có thể thấy một cách để làm điều này tốt hơn không?". @LeeHarrison, vâng, nó có vẻ hơi ngớ ngẩn. Nhưng sẽ không bao giờ có DHCP đằng sau mạng này vì lý do tổ chức.
CHK

Tại sao không đặt máy cho DHCP và nhận địa chỉ APIPA?
Keltari

Câu trả lời:


1

Bạn có thể làm cho nó đơn giản hơn với một cái gì đó như thế này:

 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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.