Я пытаюсь разобрать этот вывод ifconfig. Я видел еще один пример в Stack Overflow, где они делали этот же код, но он создает вложенный список. Однако, когда я делаю то же самое, я получаю только первые варианты соответствия. Кроме того, я хотел бы добавить RX и TX-пакеты в список и, похоже, не работает.Анализ вывода ifconfig с помощью python
Ifconfig выход
Mg0_RSP0_CPU0_0 Link encap:Ethernet HWaddr 70:e4:22:32:53:42
inet addr:20.200.130.1 Mask:255.255.0.0
inet6 addr: fe80::72e4:22ff:fe32:5342/64 Scope:Link
UP RUNNING NOARP MULTICAST MTU:1514 Metric:1
RX packets:147918 errors:0 dropped:0 overruns:0 frame:0
TX packets:119226 errors:0 dropped:0 overruns:0 carrier:3
collisions:0 txqueuelen:1000
RX bytes:103741434 (98.9 MiB) TX bytes:5320623 (5.0 MiB)
Tg0_0_0_7_0 Link encap:Ethernet HWaddr 78:ba:f9:35:66:46
inet addr:13.13.13.1 Mask:255.255.255.0
inet6 addr: fe80::7aba:f9ff:fe35:6646/64 Scope:Link
UP RUNNING NOARP MULTICAST MTU:1514 Metric:1
RX packets:26 errors:0 dropped:0 overruns:0 frame:0
TX packets:5058 errors:0 dropped:0 overruns:0 carrier:3
collisions:0 txqueuelen:1000
RX bytes:1832 (1.7 KiB) TX bytes:454625 (443.9 KiB)
Script
c = []
for paragraph in if_config_output.split('\n\n'):
ma = re.compile("^(\S+).*?inet addr:(\S+).*?Mask:(\S+)", re.MULTILINE|re.DOTALL)
result = ma.match(paragraph)
if result != None:
result = ma.match(paragraph)
interface = result.group(1)
ip = result.group(2)
mac = result.group(3)
#print "interface:", interface
#print "ip:",ip
#print "mask:", mask
c.append([interface, ip, mac])
print c
In [145]: c
Out[145]: [['Mg0_RSP0_CPU0_0', '1.83.53.27', '255.255.0.0']]
Я запустил ваш код (на _WIN_) и получил записи для обоих случаев. – CristiFati