44import typing as T
55import subprocess
66import logging
7- import shutil
87import pandas
98import io
109from time import sleep
1110
12- EXE = shutil .which ("nmcli" )
13- if not EXE :
14- raise ImportError ('Could not find NetworkManager "nmcli"' )
15-
16- NMCMD = [EXE , "-g" , "SSID,BSSID,FREQ,SIGNAL" , "device" , "wifi" ] # Debian stretch, Ubuntu 18.04
17- NMLEG = [EXE , "-t" , "-f" , "SSID,BSSID,FREQ,SIGNAL" , "device" , "wifi" ] # ubuntu 16.04
18- NMSCAN = [EXE , "device" , "wifi" , "rescan" ]
11+ from .cmd import get_nmcli
1912
2013
2114def cli_config_check () -> bool :
2215 # %% check that NetworkManager CLI is available and WiFi is active
2316
24- assert isinstance (EXE , str )
2517 try :
26- ret = subprocess .check_output ([EXE , "-t" , "radio" , "wifi" ], text = True , timeout = 2 )
18+ ret = subprocess .check_output ([get_nmcli () , "-t" , "radio" , "wifi" ], text = True , timeout = 2 )
2719 except subprocess .CalledProcessError as err :
2820 logging .error (err )
2921 return False
@@ -45,15 +37,23 @@ def cli_config_check() -> bool:
4537
4638def get_signal () -> str :
4739
40+ cmd = [get_nmcli (), "-g" , "SSID,BSSID,FREQ,SIGNAL" , "device" , "wifi" ]
41+ # Debian stretch, Ubuntu 18.04
42+ # cmd = [EXE, "-t", "-f", "SSID,BSSID,FREQ,SIGNAL", "device", "wifi"]
43+ # ubuntu 16.04
44+
4845 try :
49- subprocess .check_call (NMCMD , timeout = 1.0 )
46+ subprocess .check_call (cmd , timeout = 1.0 )
5047 except subprocess .CalledProcessError as err :
5148 raise ConnectionError (f"could not connect with NetworkManager for WiFi { err } " )
5249
5350 sleep (0.5 ) # nmcli errored for less than about 0.2 sec.
5451 # takes several seconds to update, so do it now.
52+
53+ scan = [get_nmcli (), "device" , "wifi" , "rescan" ]
54+
5555 try :
56- ret = subprocess .check_output (NMSCAN , timeout = 1.0 , text = True )
56+ ret = subprocess .check_output (scan , timeout = 1.0 , text = True )
5757 except subprocess .CalledProcessError as err :
5858 logging .error (f"consider slowing scan cadence. { err } " )
5959
0 commit comments