2015-06-10 2 views
0

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

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]?))", чтобы получить адрес инет, но я не выяснили, как разделить интерфейсные блоки.

+0

Вам действительно нужно использовать Regex для синтаксического анализа всей строки? Почему бы вам не добавить простой (более простой?) String.split и простой старый для цикла? –

+0

Что вы предлагаете нам разделить? Имейте в виду, что нет никакого стандарта для вывода ifconfig ... –

+0

В принципе, вы можете разделить на новые строковые символы ('\ n'). Петля на всех линиях. Игнорировать пустые строки. Каждый раз, когда строка начинается с символа пробела (вкладки или пробела), «запускайте» новый раздел в вашем синтаксическом анализаторе. –

ответ

0

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

Смежные вопросы