Vamos fazer um pedido.
Caso nº 5: -mac
ou melhor, --ip
Não há problemas nas linhas "case statement" do seu caso # 5.
Mesmo assim, sugiro que você altere o nome da opção de -mac
para --ip
. Endereço Mac e Endereço IP são conceitos diferentes e neste caso eu acho que ip
é o apropriado.
Matéria de estilo: mesmo que não seja uma regra estrita é comum o uso de um único -
se a seguinte opção for composta por apenas uma letra, e o uso de um duplo --
se composto por mais de uma letra. Por exemplo. no mesmo exemplo, você tem -h
e --help
. (Correto mesmo o --xx-YY
). Os scripts estão inclinados a durar no tempo e será estranho vê-lo com apenas um -
.
Voltar para o código do # 5 você pode usar algo semelhante a:
if [ "$Extension" -eq 5 ] ; then
ip=192.168.1.$mac
if nmap -sP -n -r $ip | grep "is up" >/dev/null ; then
echo "${ip} is up"
fi
fi
Erros nessa tentativa:
ip=192.168.0.$mac
é definido em 192.168.
0
.xxx
e a linha a seguir não usa a variável $ip
e, em vez disso, é usou a sub-rede 192.168.
1
.0/24
. O bloco if... then fi
aninhado não é fechado por fi
.
** Caso # 3: --up
**
Se eu entender corretamente o que você quer dizer, você quer mostrar de alguma forma a lista de todos os hosts up dessa sub-rede. Portanto, você não precisa especificar a variável end para o IP , mas deve verificar toda a sub-rede 192.168.1.xxx
.
Você pode usar algo como os seguintes comandos
if [ "$Extension" -eq 3 ] ; then
sudo nmap -sP -n -r 192.168.1.0/24 | grep -E "Nmap scan|MAC Address:"
fi
Atualização: referências sobre o endereço MAC