Shell Script (Bash) para editar a saída de um comando

0

Shell Script (Bash) para editar a saída de um comando

Estou tentando fazer um script de shell para determinar o intervalo de endereços IP em minha própria rede sem fio pessoal. Quando eu executo este comando:

ifconfig

Eu recebo esta informação importante:

inet 192.168.1.228

broadcast 192.168.1.255

netmask 255.255.255.0

Então, agora eu sei que o intervalo é 192.168.1.0-255 (ou 192.168.1.0/24). Eu tentei executar este script que fiz:

#!/bin/bash

ifconfig | awk '/broadcast/ {print $6}'

Isso gerará meu limite máximo de IPs:

192.168.1.255

Como posso fazer esse script encontrar meu intervalo máximo como este, mas em vez disso ele escreve assim:

192.168.1.0-255

ou

192.168.1.0/24

Qualquer ajuda é muito apreciada!

    
por iamr00t 29.08.2017 / 22:51

1 resposta

2

A solução mais simples é usar ip address em vez de ifconfig , o que você deve fazer de qualquer maneira.

E você pode obter a máscara de rede do ifconfig output e calcular o número de 1-bits com isto:

echo 255.255.255.0 |
    awk -F. '{print "obase=2;" $1 "*2^24+" $2 "*2^16+" $3 "*2^8+" $4}' |
    bc |
    awk '{ sub("10*$","1", $0); print length($0); }'
    
por 29.08.2017 / 22:59