2015-06-10 50 views
0

我想能够通过接口,然后通过inet地址分组ifconfig的输出。另外请假定接口块之间没有空白。.NET正则表达式来解析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组,我可以参考,并确定它们是否与ethwlan开始,然后拉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地址,但我还没有想出如何分离接口块。

+0

你真的需要使用正则表达式来解析整个字符串吗?为什么不混合一个简单的(更简单的?)string.split和一个普通的旧for循环? –

+0

你有什么建议我们分手?请记住,ifconfig的输出没有标准... –

+0

基本上,你可以用新的行字符('\ n')分割。在所有行上循环。忽略空行。每当行以空格字符(制表符或空格)开始时,在分析器中“启动”一个新的部分。 –

回答

0

这里有一个更好的方式来做到这一点:通过$ route确定默认界面,并找到与Destination = default接口然后做$ ifconfig default_interface其中default_interface是你$ route确定的接口。这样只有一个接口块,你可以很容易地解析inet addr