.NET регулярное выражение для анализа ifconfig

Я хотел бы иметь возможность группировать вывод ifconfig по интерфейсу, а затем по адресу inet. Также, пожалуйста, предположите, что между интерфейсными блоками нет пробелов.

eth0      Link encap:Ethernet  HWaddr 52:54:00:12:34:56
          inet addr:10.0.2.15  Bcast:10.0.2.255  Mask:255.255.255.0
          inet6 addr: fe80::5054:ff:fe12:3456/64 Scope: Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1382 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1344 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:247209 TX bytes:131216
          Interrupt:9 Base address:0xc000
lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope: Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:1400 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1400 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:109731 TX bytes:109731
wlan0     Link encap:Ethernet  HWaddr CC:FA:00:A9:1D:7C
          inet addr:10.92.70.35  Bcast:10.92.71.255  Mask:255.255.252.0
          inet6 addr: 2001:4898:4070:101b:cefa:ff:fea9:1d7c/64 Scope: Global
          inet6 addr: fe80::cefa:ff:fea9:1d7c/64 Scope: Link
          inet6 addr: 2001:4898:4070:101b:1d4e:9b7f:f197:2e6f/64 Scope: Global
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:134563 errors:0 dropped:0 overruns:0 frame:0
          TX packets:41967 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:75871586 TX bytes:9616476

Произвел бы 3 группы, на которые я мог бы сослаться и определить, начинают ли они eth или же wlan а затем потяните inet addr из каждого из них

Пока у меня есть @"inet addr:(?<IpV4Address>((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?))" чтобы получить адрес inet, но я не понял, как разделить блоки интерфейса.

1 ответ

Решение

Вот лучший способ сделать это: определить интерфейс по умолчанию через $ route и найти интерфейс с Destination = default тогда делай $ ifconfig default_interface где default_interface интерфейс, который вы определили из $ route, Таким образом, есть только один интерфейсный блок, и вы можете легко разобрать inet addr

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