在控制台上使用以下命令打印wlan0网卡的本地MAC地址。我想把它集成到一个脚本中,其中列表的第0个子列表将用exer中的本地MAC填充
ifconfig wlan0 | grep -o -E '([[:xdigit:]]{1,2}:){5}[[:xdigit:]]{1,2}'
正在使用的列表localization从一个名为scanned的dict中获取第一个子列表和第二个子列表。
所以我希望在第0个子列表中包含本地MAC,并为第一个子列表和第二子列表中的每个条目提供一个条目。我试过密码:
^{pr2}$但我只是得到
<subprocess.Popen object at 0x2bf0f50>
对每一个进入名单的人。尽管有正确数量的条目。
我也有一个问题,由于某种原因,程序将代码的输出打印到屏幕上,这是我不希望发生的。
我做错什么了?
这是我的尝试:
use
check_output
给出该命令的输出。在使用
ip link show
代替ifconfig为您保存一个sudo命令。在只调用
Popen
只返回一个新的Popen
实例:使用
^{pr2}$communicate()
从特定Popen
实例的stdin
,stderr
读取数据:popen对象在某种意义上是一个文件对象。在
为什么没有为您重定向所有输出的原因是stderr=PIPE,否则无论发生什么,它都将被回显到控制台中。将其重定向到管道是个好主意。在
另外,使用
shell=True
通常是个坏主意,除非您知道为什么需要它。。在这种情况下(我不认为)你不需要它。在最后,您需要将要执行的命令划分为一个列表,至少是一个2项或更多项的列表。示例:
^{pr2}$通常是
ssh -t user@root "service status-all"
,注意"service status-all"
的NOT splited部分,因为在我的示例中,这是一个整体发送给SSH客户机的参数。在不尝试,请尝试:
甚至:
相关问题 更多 >
编程相关推荐