Сценарий оболочки (Bash) для редактирования вывода команды

Сценарий оболочки (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

Любая помощь высоко ценится!

0
30.08.2017, 01:06
1 ответ

Самое простое решение — использовать 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); }'
2
28.01.2020, 02:33

Теги

Похожие вопросы