#!/usr/bin/env python3 import subprocess import socket import logging from typing import List, Optional def check_internet_connection(hosts_to_check: Optional[List[str]] = None) -> bool: """ Check internet connectivity by attempting to connect to reliable hosts. :param hosts_to_check: Optional list of hosts to check. :return: Boolean indicating if internet connection is available """ if hosts_to_check is None: hosts_to_check = [ "8.8.8.8", # Google DNS "1.1.1.1", # Cloudflare DNS "9.9.9.9" # Quad9 DNS ] for host in hosts_to_check: try: # Create a socket connection with a 5-second timeout socket.create_connection((host, 53), timeout=5) return True except (socket.error, socket.timeout): continue return False def reset_wifi_card() -> bool: """ Execute WiFi card reset commands. :return: Boolean indicating if reset commands were successful """ reset_commands = [ "echo 1 | sudo -u root tee /sys/bus/pci/devices/0000:09:00.0/reset", "sudo rmmod iwlwifi", "sudo modprobe iwlwifi" ] try: for command in reset_commands: result = subprocess.run( command, shell=True, check=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True ) print(f"Executed: {command}") print(f"Output: {result.stdout}") return True except subprocess.CalledProcessError as e: print(f"Error resetting WiFi: {e}") print(f"Error output: {e.stderr}") return False def main(): """ Check internet connection and reset WiFi if not connected. """ if not check_internet_connection(): print("No internet connection detected. Attempting WiFi reset...") reset_wifi_card() else: print("Internet connection is stable. No reset needed.") if __name__ == "__main__": main()