Retorna o valor somente do endereço IP do nmap e passa para um loop no Bash [closed]

1

Eu tenho este script do nmap que recupera apenas dispositivos IP ativos da rede.

nmap -sP 192.168.1.0/24 | awk '/is up/ {print up}; {gsub (/\(|\)/,""); up = $NF}'

Eu quero obter os endereços IP do resultado do nmap para percorrer o comando abaixo, até onde eu entendo que vários resultados podem não ter nenhum valor de retorno do nmap.

echo "# This script checks if a remote device is alive"
read va * This is suppose to receive the IP address one by one
echo "Checking Device "$va
if [ $(nc -z "$va" 22; echo $?) -eq 0 ]; then
echo $va" is Online !"
else
echo "Cannot proceed with remote connection device "$va" is Offline !"
fi
    
por Huud Rych 27.11.2018 / 01:16

2 respostas

2

Você pode verificar a porta tcp 22 com o nmap também.

nmap -p 22 192.168.1.0/24 -oG - | grep -oP "Host: \K[^ ]+(?=.* 22/open/tcp.*)"
    
por 27.11.2018 / 01:28
0

Bem-vindo ao unix.stackexchange!

xargs é seu amigo aqui.

Mas primeiro algumas alterações no seu script:

$ cat test.sh
#!/bin/bash
echo "# This script checks if a remote device is alive"
va=$1 # passing it as an argument is the right thing to do here
echo "Checking Device "$va
if [ $(nc -z "$va" 22; echo $?) -eq 0 ]; then
    echo $va" is Online !"
else
    echo "Cannot proceed with remote connection device "$va" is Offline !"
fi

E agora, a xargs magic ( % será substituída por cada endereço em cada chamada):

$ nmap -sP 172.20.10.1-2 | awk '/is up/ {print up}; {gsub (/\(|\)/,""); up = $NF}' |xargs -I % bash test.sh %
# This script checks if a remote device is alive
Checking Device 172.20.10.1
Cannot proceed with remote connection device 172.20.10.1 is Offline !
# This script checks if a remote device is alive
Checking Device 172.20.10.2
Connection to 172.20.10.2 port 22 [tcp/ssh] succeeded!
172.20.10.2 is Online !

Você também pode substituir bash test.sh % por echo ">>>%<<<" para experimentar o que acontece depois.

No entanto, a resposta do Ipor Sircer é mais curta para implementar.

Mas, como sempre, com o Unix: existem muitas soluções para cada problema

    
por 27.11.2018 / 01:55