2016-08-24 87 views
0

我正在研究一个处理Wi-Fi接入点的Python脚本。在脚本中,我调用os.system(“iwlist wlan0 s”)来扫描附近的无线AP。在Python脚本中对Bash命令的输出重新排序

从每一个我只需要两条信息:名称和MAC地址。我可以通过grep输出来获取名称或地址列表,但有没有办法将它们排列起来?比如现在,我可以得到:

ESSID: point 1 
ESSID: point 2 
etc, 

,我可以得到

Address: gh:45:df:etc 
Address: ofweiofjw 

但有可能得到以下?

name - address 
name - address 

我在考虑在Bash命令本身或通过在Python脚本中输出并以某种方式进行编辑。

+0

如何获得截至目前的输出? –

+0

告诉我们你试过的东西 –

+0

'os.system(“iwlist wlan0 s”)返回什么值? –

回答

0
import commands 

a = commands.getstatusoutput("iwlist wlp9s0 s | grep 'ESSID\|Address'|tr -s ' ' | cut -d'-' -f 2") 
for item in a[1].strip().split("Address:"): 
    print('-'.join(item.replace('\n','').strip().split("ESSID:"))) 

返回:

AA:11:DD:44:32:D7 - “Kolagh_nomap”

BB:22:EE:55:EE:21 - “BaBaei”

CC:33:FF:66:13:2C - “ali”

+0

这个工作非常非常非常感谢你,但它弄乱了我的打印机称为HP-Print-65-LaserJet 1102的那个。它被列为AB:CD:EF:GH:IJ:KLPrint。任何想法为什么?你也可以解释这是如何工作的,因为我想了解而不是盲目编码别人告诉我的内容。非常感谢 – grinningveil72