Michael Felt <aixto...@felt.demon.nl> 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 <rep...@bugs.python.org>
<https://bugs.python.org/issue28009>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to