Как получить IPV4 адрес интерфейса из /proc

if [! -d папка] часть неверна. Он ложен как для пустых, так и для непустых каталогов. Восклицательный знак - это логический оператор «не»: вы проверяете, не существует ли каталог перед его удалением.

Уберите этот восклицательный знак.

34
26.02.2019, 15:25
3 ответа

В каталоге /procвы также можете найти адреса IPv4 в таблице Forwarding Information Base, в/proc/net/fib_trie

Таблица довольно понятна, если сделать просто cat, сначала идет Main:, а затемLocal:

cat /proc/net/fib_trie

или чтобы увидеть вашу сеть, IP-адреса и сетевую маску:

cat /proc/net/fib_trie | grep "|--"   | egrep -v "0.0.0.0| 127."
       |-- 193.136.1.0
       |-- 193.136.1.2
    |-- 193.136.1.255
       |-- 193.136.1.0
       |-- 193.136.1.2
    |-- 193.136.1.255       
43
20.08.2021, 11:39
$ awk '/32 host/ { print f } {f=$2}' <<< "$(</proc/net/fib_trie)"
5
20.08.2021, 11:39

Возможно связать сетевые адреса из /proc/net/fib_trieс интерфейсами из/proc/net/route:

  $ awk '/^[^I]/ {print $1 " " $2}' /proc/net/route
  br0 0001020A
  br0 FE01020A

..и преобразовать шестнадцатеричные сетевые адреса с помощью:

$ echo FE01020A | xxd -r -p | hexdump -e '/1 "%u."' | tac -s'.' | sed 's/\.$//'
10.2.1.254
0
03.09.2021, 06:13

Теги

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