.NET 正则表达式解析 ifconfig
.NET regex to parse 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 地址,但我还没有想出如何分离接口块。
这里有一个更好的方法:通过 $ route
确定默认接口并使用 Destination = default
找到接口然后执行 $ ifconfig default_interface
其中 default_interface
是您的接口从 $ route
确定。这样只有一个接口块,您可以轻松解析 inet addr
我希望能够按接口对 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 地址,但我还没有想出如何分离接口块。
这里有一个更好的方法:通过 $ route
确定默认接口并使用 Destination = default
找到接口然后执行 $ ifconfig default_interface
其中 default_interface
是您的接口从 $ route
确定。这样只有一个接口块,您可以轻松解析 inet addr