Michael Felt <[email protected]> added the comment:
re; the current status of PR8672 - which I shall probably close as it no longer
merges.
@taleinat re: the need for lambda
As _find_mac_netstat() is only called once the need for the last two arguments
may be unnecessary. My reason for including them was to keep _find_mac_netstat
comparable to _find_mac.
1) I am reluctant to make changes to historical code, however, in this case it
was needed as _find_mac has, imho, a requirement for input that differs from
AIX netstat.
* On linux (debian, centos) I do not find a MAC address for netstat
* On linux, where, e.g., ifconfig does return a value - the lambda i: i±1 is
vital as the value follows the keyword on the same line.
For AIX lambda I: i is needed because only the first line (header) has
keywords, the remaining lines give the values.
Linux: ifconfig (keyword "ether")
root@x074:~# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.129.74 netmask 255.255.255.0 broadcast 192.168.129.255
inet6 fe80::f8d1:81ff:fe12:b104 prefixlen 64 scopeid 0x20<link>
inet6 2001:981:56fd:1:f8d1:81ff:fe12:b104 prefixlen 64 scopeid
0x0<global>
ether fa:d1:81:12:b1:04 txqueuelen 1000 (Ethernet)
RX packets 1605776 bytes 177990366 (169.7 MiB)
RX errors 0 dropped 1027921 overruns 0 frame 0
TX packets 25045 bytes 1567902 (1.4 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device interrupt 20
So, when the keyword is found, as each word on the line is examined "i+1" gives
the value
For AIX (in anycase), the keyword is Address - the output is:
michael@x071:[/data/prj/python/git/python3-3.8]netstat -ia
Name Mtu Network Address Ipkts Ierrs Opkts Oerrs Coll
en0 1500 link#2 fa.d1.8c.f7.62.4 2348009992 0 946551098 0 0
01:00:5e:00:00:01
en0 1500 192.168.129 x071 2348009992 0 946551098 0 0
224.0.0.1
en0 1500 192.168.90 x071 2348009992 0 946551098 0 0
224.0.0.1
en1 1500 link#3 fa.d1.8c.f7.62.5 64346336 0 89935059 0 0
01:00:5e:00:00:01
en1 1500 192.168.2 mail.aixtools.xx 64346336 0 89935059 0 0
224.0.0.1
Note - the value with colons - as many (all?) other systems - this seems to be
a constant, and a value on a line all by itself - so the old code could never
ever find it, even if it could have parsed it. The actual MAC address is on a
line with several entries - matching the values given by the "header" line - so
lambda i: i is needed to examine the later lines to find a suitably formatted
value.
So, should I write _find_mac_netstat for AIX only (and maybe set "skipIf"
Linux). There are many assumptions in this code. I do not feel qualified to
change things I cannot test - so, as much as possible I follow the tried and
true.
I hope this clarifies my intent well enough that you can make a decision.
----------
_______________________________________
Python tracker <[email protected]>
<https://bugs.python.org/issue28009>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com