|
3 | 3 | from io import StringIO |
4 | 4 | import pandas |
5 | 5 | import requests |
| 6 | +import shutil |
6 | 7 | from datetime import datetime |
7 | 8 | from time import sleep |
8 | 9 | from pathlib import Path |
9 | 10 | from typing import Dict, Any, Optional |
10 | | -# |
| 11 | + |
| 12 | +NMCLI = shutil.which('nmcli') |
| 13 | +if not NMCLI: |
| 14 | + raise ImportError('This program relies on NetworkManager via "nmcli"') |
| 15 | + |
11 | 16 | URL = 'https://location.services.mozilla.com/v1/geolocate?key=test' |
12 | | -NMCMD = ['nmcli', '-g', 'SSID,BSSID,FREQ,SIGNAL', 'device', 'wifi'] # Debian stretch, Ubuntu 18.04 |
13 | | -NMLEG = ['nmcli', '-t', '-f', 'SSID,BSSID,FREQ,SIGNAL', 'device', 'wifi'] # ubuntu 16.04 |
14 | | -NMSCAN = ['nmcli', 'device', 'wifi', 'rescan'] |
| 17 | +NMCMD = [NMCLI, '-g', 'SSID,BSSID,FREQ,SIGNAL', 'device', 'wifi'] # Debian stretch, Ubuntu 18.04 |
| 18 | +NMLEG = [NMCLI, '-t', '-f', 'SSID,BSSID,FREQ,SIGNAL', 'device', 'wifi'] # ubuntu 16.04 |
| 19 | +NMSCAN = [NMCLI, 'device', 'wifi', 'rescan'] |
15 | 20 | HEADER = 'time lat lon accuracy NumBSSIDs' |
16 | 21 |
|
17 | 22 | # %% |
@@ -47,14 +52,10 @@ def logwifiloc(T: float, logfile: Path): |
47 | 52 |
|
48 | 53 | def nm_config_check(): |
49 | 54 | # %% check that NetworkManager CLI is available and WiFi is active |
50 | | - try: |
51 | | - ret = subprocess.check_output(['nmcli', '-t', 'radio', 'wifi'], universal_newlines=True, timeout=1.).strip().split(':') |
52 | | - except FileNotFoundError: |
53 | | - raise OSError('CUrrently this program relies on NetworkManager') |
| 55 | + ret = subprocess.check_output([NMCLI, '-t', 'radio', 'wifi'], universal_newlines=True, timeout=1.).strip().split(':') |
54 | 56 |
|
55 | | - assert 'enabled' in ret and 'disabled' not in ret, 'must enable WiFi, perhaps via nmcli radio wifi on' |
56 | | - |
57 | | -# %% |
| 57 | + if 'enabled' not in ret and 'disabled' in ret: |
| 58 | + raise OSError('must enable WiFi, perhaps via nmcli radio wifi on') |
58 | 59 |
|
59 | 60 |
|
60 | 61 | def get_nmcli() -> Optional[Dict[str, Any]]: |
|
0 commit comments