Как я могу получить неформатированную информацию об IP-адресах в оболочке?

Я пишу сценарий оболочки, который нуждается в информации о состоянии сетевого подключения - базовом материале, таком как ip-адрес, подсеть, сетевая маска и т. д.

Я мог бы просто использовать ifconfig и sed / grep для информации, но я надеялся, что есть более чистый способ сделать это - возможно, используя команду ip или аналогичные утилиты.

Я ищу что-то, что могло бы дать следующие результаты:

$ (magic command) ip
192.168.1.1
$ (magic command) netmask
255.255.255.0
$ (magic command) subnet
192.168.0.0

и, возможно, подобные вещи для серверов сетевого шлюза / DNS.

существует команда? Возможно, есть флаг --unformatted для ip или ifconfig?

Спасибо:)

1
задан 2 September 2013 в 00:29

3 ответа

Команда ip отменяет команду ifconfig и поддерживает опцию -o для упрощения автоматического разбора.

Например:

ip -o addr show dev wlan0|awk '$3=="inet"{print $4}'

будет создавать что-то вроде :

192.168.0.2/24
3
ответ дан 24 May 2018 в 18:27

Ну, вы можете попробовать grep и awk получить информацию с выхода следующим образом: ip addr show eth0 | grep 'inet ' | awk '{ print $2}'

Ваш вывод должен выглядеть следующим образом: 192.168.1.201/24

ip addr show eth0 получает информацию от eth0. grep 'inet ' для IPv4. 'inet6' следует использовать для IPv6. awk '{ print $2}' просто уменьшает вывод до второй серии символов.

Маска сети может быть определена из / 24 после IP-адреса.

2
ответ дан 24 May 2018 в 18:27

Да, есть способ сделать ваши собственные команды и получить вашу информацию.

Чтобы ваш IpAddress сохранил следующую команду в любом файле, скажите myipaddr:
ifconfig | grep 'inet addr:' | grep -v '127.0.0.1' | awk '{print $2}' | cut -f2 -d:
Аналогично, чтобы сохранить NetMask команда в файле say mymask:
ifconfig | grep 'inet addr:' | grep -v '127.0.0.1' | awk '{print $4}' | cut -f2 -d:
Чтобы получить Bcast (подсеть) сохранить следующую команду в другом файле, скажите mysubnet:
ifconfig | grep 'inet addr:' | grep -v '127.0.0.1' | awk '{print $3}' | cut -f2 -d:
Затем сделайте все исполняемые файлы и скопируйте их или переместите в каталог /bin:
$ sudo chmod +x myipaddr mysubnet mymask
$ sudo cp myipaddr mysubnet mymask /usr/bin

Теперь, чтобы получить нужную информацию, вам нужно просто открыть терминал и выполнить любую из этой команды. Например:

    $ sudo myipaddr

Должно отображаться примерно так:

192.168.1.11

    $ sudo mymask

должно отображать что-то вроде:

[d18 ] 255.255.255.0

    $ sudo mysubnet

должно выглядеть примерно так:

192.168.1.255

1
ответ дан 24 May 2018 в 18:27
  • 1
    не лучше 766 для разрешений скриптов? Кроме того, создание корневого владельца их тоже неплохая идея. – Braiam 2 September 2013 в 02:04
  • 2
    Да, это не плохая идея, но эта команда предназначена для личного использования, поэтому лучше использовать имя команды только с ее именем, вместо использования sudo каждый раз. – Saurav Kumar 2 September 2013 в 02:13

Другие вопросы по тегам:

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