IP가 사용 가능한지 확인하기 위해 스크립트를 사용할 수 있습니까?
의사코드는 다음과 같습니다
if [ip is available]
echo "IP is available"
else
echo "IP is not available"
fi
어쩌면 이것을 달성하기 위해 ping을 사용할 수 있습니까?
답변1
요청하는 장치에 이미 IP 주소가 있는 경우 다음과 같이 공정한 시도를 할 수 있습니다.ping
if ping -c1 -w3 10.11.12.13 >/dev/null 2>&1
then
echo "Ping responded; IP address allocated" >&2
else
echo "Ping did not respond; IP address either free or firewalled" >&2
fi
이 기술은 응답하지 않는 호스트와 존재하지 않는 호스트를 구별하는 데 사용할 수 없습니다.
답변2
어떤 의미에서 이것은 불가능합니다.
DHCP 서버에서 특정 IP를 요청할 수 있습니다. IPv6은 자동으로 중복 주소 감지를 수행합니다. IPv4에서 DHCP 클라이언트는 ARP(또는 이와 동등한 방법)를 사용하여 중복된 주소를 확인해야 합니다. 그러나 표준 도구는 Windows와 달리 고정 주소에서 IPv4 충돌이 발생하는지 확인하지 않습니다.
하지만 IP를 확인해보면아니요할당하려고 할 때 확인하자마자 IP를 사용할 수 없게 될 수 있습니다("경쟁 조건").
여러 개의 충돌하는 DHCP 서버와 관련된 네트워크 구성 오류가 없는 한 DHCP 주소 할당은 이 경쟁 조건의 영향을 받지 않습니다. IPv6 DAD도 이를 차단해야 합니다.
IPv4 이중 활성 감지ARP 프로브가 사용되지만 완전한 표준이 되지는 않았습니다. 나는 DHCPv4가 어떤 방식으로든 프로빙을 지정하지 않는다고 생각하므로 DHCPv4의 일부 구현은 논쟁의 대상이 될 수 있습니다.
John이 지적했듯이 (맹목적으로) IP를 요구하는 정적으로 구성된 장치를 갖는 것도 가능하지만 지금은 작동이 중단되었습니다. IPv4 주소가 필요한 경우 DHCP를 사용하여 이를 얻는 것이 네트워크 관리자가 이러한 충돌을 방지할 수 있는 좋은 옵션입니다.