デバイスのリストに ping を実行し、ping に応答するデバイスの IP を保存する必要があります。私はこのコードを持っています:
function add_ip_if_pings
{
ping -c 1 -W 1 $1 > /dev/null
if [ "$?" = "0" ]; then
iplist="$iplist $1"
echo $iplist
fi
}
# ...
for id in $(seq "$2" "$3"); do
for nr in $(seq 1 244); do
add_ip_if_pings "10.$secondIpOctet.$id.$nr" &
done
done
#waiting for all pings to finish
wait
echo "List: $iplist"
したがって、の値を出力$iplist
すると、add_ip_if_pings
常に単一の IP が含まれます。また、最後に出力を取得します。
List:
複数のスレッドが同じ変数を使用しているため、これはある種の同期の問題だと思います。ここで最善の解決策は何ですか?永遠に待ちたくないので、すべてのデバイスを並行してpingする必要があります...