Я написал простой IP-сканер, основанный на ping (см. Ниже), но у него есть проблема.
#!/bin/bash
counter = 0
for ip in 192.168.44.{1..254}; do
ping -c 1 -W 1 $ip | grep "64 bytes" &
let counter++
if [[ "$counter" -eq 254 ]];
then
exit 0;
fi
done
Во-первых, цикл for запускает несколько потоков и выводит толькотерминал - это ответы на пинг. Однако, когда скрипт завершает эхо-тестирование всех компьютеров в сети, он никогда не завершает работу, как вы можете видеть на следующем снимке экрана:
и янужно нажать Enter
, чтобы окончательно завершить его.
Я также пытался поместить exit 0
после оператора done
, но он все еще не работает. Как я могу заставить скрипт завершиться, когда завершится цикл for?
Примечание: Я нашел, что эта реализация самая быстрая, чтобы найти существующие машины в локальной сети, но если у кого-то естьпредложение более подходящего кода, я был бы признателен.