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のいくつかの実装は議論の対象となる可能性があります。
ジョンが指摘したように、(盲目的に)IPを必要とする静的に構成されたデバイスを持つことも可能ですが、今は動作が停止しています。 IPv4アドレスが必要な場合は、DHCPを使用してこれを取得することは、ネットワーク管理者がこの競合を防ぐのに最適なオプションです。