1
1
""" Network Manager CLI (nmcli) functions """
2
2
3
- from __future__ import annotations
4
- import typing as T
5
3
import subprocess
6
4
import logging
7
- import pandas
8
5
import io
9
6
from time import sleep
10
7
11
- from .cmd import get_nmcli
8
+ import pandas
9
+
10
+ from .exe import get_exe
12
11
13
12
14
13
def cli_config_check () -> bool :
15
14
# %% check that NetworkManager CLI is available and WiFi is active
15
+ exe = get_exe ("nmcli" )
16
16
17
17
try :
18
- ret = subprocess .check_output ([get_nmcli () , "-t" , "radio" , "wifi" ], text = True , timeout = 2 )
18
+ ret = subprocess .check_output ([exe , "-t" , "radio" , "wifi" ], text = True , timeout = 2 )
19
19
except subprocess .CalledProcessError as err :
20
20
logging .error (err )
21
21
return False
@@ -36,7 +36,9 @@ def cli_config_check() -> bool:
36
36
37
37
38
38
def get_signal () -> str :
39
- cmd = [get_nmcli (), "-g" , "SSID,BSSID,FREQ,SIGNAL" , "device" , "wifi" ]
39
+ exe = get_exe ("nmcli" )
40
+
41
+ cmd = [exe , "-g" , "SSID,BSSID,FREQ,SIGNAL" , "device" , "wifi" ]
40
42
# Debian stretch, Ubuntu 18.04
41
43
# cmd = [EXE, "-t", "-f", "SSID,BSSID,FREQ,SIGNAL", "device", "wifi"]
42
44
# ubuntu 16.04
@@ -49,7 +51,7 @@ def get_signal() -> str:
49
51
sleep (0.5 ) # nmcli errored for less than about 0.2 sec.
50
52
# takes several seconds to update, so do it now.
51
53
52
- scan = [get_nmcli () , "device" , "wifi" , "rescan" ]
54
+ scan = [exe , "device" , "wifi" , "rescan" ]
53
55
54
56
try :
55
57
ret = subprocess .check_output (scan , timeout = 1.0 , text = True )
@@ -59,7 +61,7 @@ def get_signal() -> str:
59
61
return ret
60
62
61
63
62
- def parse_signal (raw : str ) -> list [ dict [ str , T . Any ]] :
64
+ def parse_signal (raw : str ) -> pandas . DataFrame :
63
65
dat = pandas .read_csv (
64
66
io .StringIO (raw ),
65
67
sep = r"(?<!\\):" ,
0 commit comments