Обработка ошибок с nmcli
This commit is contained in:
parent
4309487562
commit
43f0bc1cdc
1 changed files with 21 additions and 6 deletions
|
|
@ -33,19 +33,34 @@ class WifiConnectionService:
|
|||
try:
|
||||
if not self.interface:
|
||||
return False, "Wi-Fi-интерфейс не доступен"
|
||||
|
||||
result = subprocess.run(["nmcli", "-f", "SSID", "device", "wifi", "list"], capture_output=True, text=True)
|
||||
if ssid not in result.stdout:
|
||||
return False, f"Сеть с SSID {ssid} не найдена"
|
||||
return False, f"Сеть с SSID {ssid} не найдена в списке доступных сетей"
|
||||
|
||||
cmd = ["nmcli", "device", "wifi", "connect", ssid, "password", password]
|
||||
subprocess.run(cmd, capture_output=True, text=True, check=True)
|
||||
process = subprocess.run(cmd, capture_output=True, text=True, check=False)
|
||||
if process.returncode != 0:
|
||||
error_msg = process.stderr.lower()
|
||||
if "secrets were required" in error_msg or "authentication failed" in error_msg or "802-11-wireless-security.psk: недействительное свойство" in process.stderr:
|
||||
return False, f"Ошибка подключения к {ssid}: Неверный пароль"
|
||||
elif "no network with ssid" in error_msg:
|
||||
return False, f"Ошибка подключения к {ssid}: Сеть с SSID {ssid} недоступна или неверно указана"
|
||||
else:
|
||||
return False, f"Ошибка подключения к {ssid}: {process.stderr}"
|
||||
logger.info(f"Успешное подключение к сети {ssid}")
|
||||
return True, None
|
||||
except subprocess.CalledProcessError as e:
|
||||
logger.error(f"Ошибка подключения к {ssid}: {e.stderr}")
|
||||
return False, f"Ошибка подключения: {e.stderr}"
|
||||
error_msg = e.stderr.lower()
|
||||
if "secrets were required" in error_msg or "authentication failed" in error_msg or "802-11-wireless-security.psk: недействительное свойство" in e.stderr:
|
||||
return False, f"Ошибка подключения к {ssid}: Неверный пароль"
|
||||
elif "no network with ssid" in error_msg:
|
||||
return False, f"Ошибка подключения к {ssid}: Сеть с SSID {ssid} недоступна или неверно указана"
|
||||
return False, f"Ошибка подключения к {ssid}: {e.stderr}"
|
||||
except Exception as e:
|
||||
logger.error(f"Неизвестная ошибка при подключении к {ssid}: {str(e)}")
|
||||
return False, f"Неизвестная ошибка: {str(e)}"
|
||||
return False, f"Ошибка подключения к {ssid}: Неизвестная ошибка - {str(e)}"
|
||||
|
||||
def disconnect(self, ssid: str) -> Tuple[bool, Optional[str]]:
|
||||
"""Отключается от Wi-Fi сети по указанному SSID."""
|
||||
|
|
@ -70,10 +85,10 @@ class WifiConnectionService:
|
|||
return True, f"Активное подключение с SSID {ssid} не найдено"
|
||||
except subprocess.CalledProcessError as e:
|
||||
logger.error(f"Ошибка при отключении от {ssid}: {e.stderr}")
|
||||
return False, f"Ошибка отключения: {e.stderr}"
|
||||
return False, f"Ошибка отключения от {ssid}: {e.stderr}"
|
||||
except Exception as e:
|
||||
logger.error(f"Неизвестная ошибка при отключении от {ssid}: {str(e)}")
|
||||
return False, f"Ошибка отключения: {str(e)}"
|
||||
return False, f"Ошибка отключения от {ssid}: {str(e)}"
|
||||
|
||||
def get_status(self) -> Tuple[bool, Optional[str]]:
|
||||
"""Проверяет статус текущего подключения к Wi-Fi."""
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue