Формировать только определенную часть команды вывода bash

Формировать только определенную часть команды вывода bash

У меня есть простая программа, которую я называю ipsweep. Все, что она должна делать, это пинговать IP-адрес и показывать используемые IP-адреса.

Вот что я сделал в первый раз:

#!/bin/bash
for ip in {1...254}; do
ping -c 1 $1.$ip
done

Это сработало, но показывает информацию, которая мне не нужна. Все, что мне нужно, это используемые IP-адреса. Это показало все это для каждого IP:

введите описание изображения здесь

Поэтому я попробовал добавить несколько фильтров, например| grep "ping" | cut -d " " -f 2

#!/bin/bash
for ip in {1...254}; do
ping -c 1 $1.$ip | grep "ping" | cut -d " " -f 2 &
done

Теперь консоль показывает только IP, но она показывает ВСЕ IP, независимо от того, находятся ли они в пользовании или нет (мне нужны только используемые, повторяю). Я пытаюсь решить это уже 5 часов, но так и не могу. Я знаю, что с помощью if это можно решить, но я не знаю, как это написать.

введите описание изображения здесь

решение1

Использование кода выхода ping для определения активности хоста:

#!/bin/bash
for ip in {1..254}; do
  ping -q -c 1 $1.$ip >2 2>&- && printf %s.%s\\n $1 $ip
done

решение2

Во-первых, проверять наличие соединения с помощью одного пакета неразумно, но:

# IP address 192.168.100.1 exists, 192.168.100.122 does not.
walt@bat:~(0)$ ping -c 1 192.168.100.1
PING 192.168.100.1 (192.168.100.1) 56(84) bytes of data.
64 bytes from 192.168.100.1: icmp_seq=1 ttl=63 time=2.76 ms

--- 192.168.100.1 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 2.763/2.763/2.763/0.000 ms
walt@bat:~(0)$ ping -c 1 192.168.100.122
PING 192.168.100.122 (192.168.100.122) 56(84) bytes of data.

--- 192.168.100.122 ping statistics ---
1 packets transmitted, 0 received, 100% packet loss, time 0ms

Оба примера, успешный и неудачный, содержат --- 192.168.100.122 ping statistics ---строку " ", которую вы определяете grep ping.

Вместо этого вы могли бы grep ", 0% packet loss".

Связанный контент