interface = popen('ifconfig | awk \'/ eth0 / {print $ 1} \'')。read()

时间:2016-06-10 02:21:57

标签: python-3.x mininet

有人知道这个Python脚本吗?它做了什么?

interface = popen('ifconfig | awk \'/eth0/ {print $1}\'').read()

2 个答案:

答案 0 :(得分:1)

$ ifconfig

会打印出类似的内容:

eth0      Link encap:Ethernet  HWaddr xx:xx:xx:xx:xx:xx  
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
...

将使用模式awk将其传送到eth0,与/eth0/的行匹配,并打印第一个字段,在这种情况下为eth0

popen将此shell脚本的输出读入Python。

因此,如果您有一个eth0界面interface,则eth0将是eth0,如果您没有interface界面eth0将是Python中的空字符串。

所以我的猜测是它会查看系统中是否存在DIV #s4-topheader2 { BORDER-TOP: 0px; BACKGROUND-IMAGE: none; BORDER-BOTTOM: #222 7px solid } .s4-toplinks { FONT-SIZE: 14px; FONT-FAMILY: "Helvetica Neue", Arial, Helvetica, sans-serif; BACKGROUND: #333 } .s4-tn .menu LI A.static { BORDER-TOP: medium none; FONT-FAMILY: "Helvetica Neue", Arial, Helvetica, sans-serif; BORDER-RIGHT: medium none; BORDER-BOTTOM: medium none; COLOR: #ccc; PADDING-BOTTOM: 20px; PADDING-TOP: 20px; PADDING-LEFT: 20px; BORDER-LEFT: medium none; PADDING-RIGHT: 20px } .s4-tn .menu LI A.selected { BORDER-TOP: medium none; BORDER-RIGHT: medium none; BACKGROUND-IMAGE: none; BORDER-BOTTOM: medium none; MARGIN: 0px; BORDER-LEFT: medium none; BACKGROUND-COLOR: #222 } .s4-tn .menu LI A.static:hover { TEXT-DECORATION: none; BACKGROUND: #444; COLOR: white } DIV #s4-searcharea { POSITION: relative; TOP: 17px } ,如果可用,它将作为默认值使用。

答案 1 :(得分:0)

ifconfigawk都是标准的Unix / Linux命令。 (ifconfig已经有替换,但仍然经常使用)。

在shell命令ifconfig | awk '/eth0/ {print $1}'中,前一个命令打印有关系统网络接口的信息,后者是一个过滤器,它只打印每个记录的第一个字段(基本上是第一个字)(即文本行) )匹配eth0文字字符串。 awk是一个功能强大的文本处理工具。它的综合手册有一本小书的大小。

这个shell命令有一个Python包装器,它在一个单独的进程中运行它并读取结果输出。如果您想尝试,popen必须从os导入。

eth0是第一个以太网接口的传统名称。结果可能是这个名字后跟冒号和换行符。还将包括eth0:0等网络别名。它仅适用于使用eth0的命名方案的系统。例如。 Linux过去曾使用过这样的接口名称,但现在标准的是不同的,更可预测的命名方案。

这就是它的全部功能。我不知道预期的用途,但我个人觉得这些代码不可靠且效率低下。