Estou tentando obter uma lista de IPs que estão UP, então usei nmap
para primeiro salvar todos eles em um arquivo de texto:
nmap -v -sn 10.10.10.1-254 -oG hosts.txt
Agora quero executar outro nmap
comando nesses IPs, para analisar e obter o IP do arquivo de texto. Estou tentando o seguinte, mas não está funcionando; a variável v
não tem o valor do IP salvo:
#!/bin/bash
while read line; do
v=$line|grep 'Up' -B1|grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}'
echo $v
done < hosts.txt
Seu script não parece estar escrito corretamente:
Atribuir uma variável não tem saída, então você não está canalizando nada para
grep
.Provavelmente seria mais simples apontar
awk
para o seuhosts.txt
arquivo:Dado o formato do arquivo criado por
nmap
(perdoe o intervalo de IP diferente; estou claramente em uma rede diferente, mas o exemplo ainda é válido):Se estivermos interessados apenas em hosts que mostram
Status: Up
, a palavra mágica é a última da linha. Portanto, costumamosawk
olhar apenas para as linhas em que o último campo é igual aUp
, e imprimir o segundo campo (a saber: o endereço IP).