对于一个点PPPoE ppp0
Linux下的设备,如何可靠的获取底层的以太网设备?
ip -d link
我查看了和 目录的输出/sys/class/net/ppp0
,但既没有提到父设备,也没有提到 pppd 进程的 PID。
如果系统上只有一个 pppd 运行,则有一种“解决方法”:
$ cat /proc/net/pppoe
Id Address Device
0000516D dc:99:16:c4:58:35 wan.25
在本例中,wan.25
就是所需的信息。
但那个“Id”0000516D
我还没有看到其他地方将它链接到PPP设备。那么如何区分多个PPPoE接口呢?
答案1
重读时pppd
联机帮助页我看到这/var/run/pppd2.tdb
不仅仅适用于 MultiLink,而是将信息存储在TDB格式。
手册页没有详细说明如何询问该文件,但我能够弄清楚:
注意:您需要可选的tdb 工具包或您的发行版中的同等内容。
$ D="inet" # The name of your PPPoE interface
$ T="/copy/of/pppd2.tdb"
$ tdbdump $T -k IFNAME=$D
pppd34491
$ cID="pppd34491"
然后,该 ID“pppd34491”可用于在此数据库副本中查找该连接的其他连接信息。该信息存储为分号分隔的键=值对,因此为了查看,您可以通过以下方式传递该信息awk
:
$ tdbdump $T -k $cID | awk 'BEGIN{RS=";";FS="="}{print $1" "$2}' |column -t
CALL_FILE Provider
DEVICE wan.25
MACREMOTE So:me:ma:cc:cc:cc
IFNAME inet
IPLOCAL MyIPV4
IPREMOTE PeerIPv4
(删掉一些不太有趣的东西)