Я пытаюсь сканировать свою локальную сеть с помощью ping, вызывая с помощью Gnu Parallel. Код в идеале будет просто сообщать о тех IP-адресах, которые работают, и удалять любые подробные отчеты. Исходный код (без параллельного кода), который работает хорошо:
for ip in $(seq 1 254) ; do ping -t5 -c 1 192.168.0.$ip > /dev/null ; [ $? -eq 0 ] && echo "192.168.0.$ip UP" & done
Однако он раздражает все сообщения о завершении задания (set + m не помогает). Последовательный запуск занимает слишком много времени для опроса каждого IP-адреса.
Параллельный код, который работает до сих пор (для выполнения необходимо выполнить - dry -run):
seq 1 254 | parallel --dry-run ping -t5 -c 1 192.168.0.{}
, но пытаясь сделать
seq 1 254 | parallel --dry-run ping -t5 -c 1 192.168.0.{} ';' [ $? -eq 0 ] && echo "192.168.0.{} UP"
или вариации этого, не удается достичь цели. Кто-нибудь может помочь с тестовой частью здесь?