Сценарий оболочки (Bash) для редактирования вывода команды
Я пытаюсь создать сценарий оболочки для определения диапазона IP-адресов в моей личной беспроводной сети. . Когда я запускаю эту команду:
ifconfig
, я получаю эту ключевую информацию:
inet 192.168.1.228
broadcast 192.168.1.255
netmask 255.255.255.0
Итак, теперь я знаю, что диапазон 192.168.1.0-255 (или 192.168.1.0/24). Я попытался запустить этот скрипт, который я сделал:
#!/bin/bash
ifconfig | awk '/broadcast/ {print $6}'
Это выведет мой максимальный диапазон IP-адресов:
192.168.1.255
Как я могу заставить этот скрипт найти мой максимальный диапазон, как это, но вместо этого он пишет это так:
192.168.1.0-255
или
192.168.1.0/24
Любая помощь высоко ценится!
Самое простое решение — использовать ip-адрес
вместо ifconfig
, что вы должны сделать в любом случае.
И вы можете получить сетевую маску из вывода ifconfig
и вычислить количество 1-бит следующим образом:
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); }'