macaddress を ifconfig 以外の手段で集めるには?

わりと古くて新しい問題のようです。
ここの記述を元に思考錯誤したらなんかできた。
http://wiki.nbj.co.jp/devel/index.htm?LinuxTips#i22

$ lspci -m|grep Ether|awk '{print $1}'|while read busid; do mac=`lspci -vvs ${busid}|grep -i serial|perl -lane'print uc(join(":",@v[7,6,5,2,1,0])) if @v=split(/-/,$F[-1])'`;echo ${busid} ${mac}; done

busid と eth? の対応付けは別途必要なので、それはそれで調べないと駄目。