2016-08-24 2 views
0

Я работаю над скриптом Python, который имеет дело с точками доступа Wi-Fi. В сценарии я вызываю os.system («iwlist wlan0 s») для сканирования беспроводных точек доступа поблизости.Переупорядочение вывода команд Bash в скрипте Python

Имеются только две части информации, которые мне нужны от каждого: имя и 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:"))) 

возврата:

АА: 11: ДД: 44: 32: D7 - "Kolagh_nomap"

ВВ: 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

Смежные вопросы