Defina apenas uma parte específica de um comando de saída do bash

Defina apenas uma parte específica de um comando de saída do bash

Eu tenho um programa simples que chamo de ipsweep. Tudo o que ele deve fazer é executar ping em um endereço IP e mostrar os IPs em uso.

Isto é o que fiz da primeira vez:

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

Funcionou, mas está mostrando informações que não preciso. Tudo que preciso são os endereços IP em uso. Mostrou tudo isso com cada IP:

insira a descrição da imagem aqui

Então tentei adicionar alguns filtros como| 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

Agora o console mostra apenas os IPs, mas mostra TODOS os IPs, sejam eles de usuário ou não (só preciso dos que estão em uso, repito). Estou tentando resolver isso há 5 horas, mas ainda não consigo. Eu sei que com um if isso poderia ser resolvido, mas não sei como escrever.

insira a descrição da imagem aqui

Responder1

Usando o código de saída ping para determinar se o host está ativo:

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

Responder2

Primeiro, verificar a conectividade com um único pacote não é aconselhável, mas:

# 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

Os exemplos de sucesso e fracasso contêm a --- 192.168.100.122 ping statistics ---linha " " que você está detectando grep ping.

Você poderia grep ", 0% packet loss"em vez disso.

informação relacionada