анализ данных SSID через Python - PullRequest
3 голосов
/ 16 января 2012

В настоящее время у меня есть следующее.Но я заметил, что если SSID включает в себя пробел, порядок убирается:

import subprocess
import csv

process = subprocess.Popen(['/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport', '-s'], stdout=subprocess.PIPE)
stdout, stderr = process.communicate()

reader = csv.DictReader(stdout.decode('ascii').splitlines(),
                        delimiter=' ', skipinitialspace=True,
                        fieldnames=['wifi_name', 'mac', 'strength'])

for row in reader:
    print(row)

Моя цель - сохранить SSID, mac-адрес и уровень сигнала, чтобы его можно было сравнить с электронной таблицей.

1 Ответ

5 голосов
/ 16 января 2012

С airport --help:

-x        --xml                Print info as XML

Который будет выводить информацию в формате XML Apple для списков свойств, которые должны более надежно анализироваться. Python даже поставляется с модулем plistlib, который может анализировать XML в словарь Python:

#!/usr/bin/env python
from subprocess import Popen, PIPE
from plistlib import readPlist
from pprint import pprint

AirportPath = '/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport'

proc = Popen([AirportPath, '-s', '-x'], stdout=PIPE)

ssid_data = readPlist(proc.stdout)
pprint(ssid_data)
...