Я пишу сценарий оболочки, который нуждается в информации о состоянии сетевого подключения - базовом материале, таком как 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?
Спасибо:)
Команда ip отменяет команду ifconfig и поддерживает опцию -o для упрощения автоматического разбора.
Например:
ip -o addr show dev wlan0|awk '$3=="inet"{print $4}'
будет создавать что-то вроде :
192.168.0.2/24
Ну, вы можете попробовать 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-адреса.
Да, есть способ сделать ваши собственные команды и получить вашу информацию.
Чтобы ваш 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