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 - %post
phầ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.txt
tham chiếu để trỏ đến ifcfg-eth0
và thả nó vào %post
phầ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
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