** Souffrez-vous tous d'un "pas d'accès Internet" soudain? ** **
J'étais dérangé. J'ai créé un script pour automatiser les tâches de routine et le faire résider sur un ancien PC. Lorsque j'ai laissé le PC allumé, j'étais dans un état "sans accès à Internet" avant de le savoir, et j'ai dû déconnecter et reconnecter manuellement le réseau du PC. Il est effrayant que le processus s'arrête avant que vous ne le sachiez, même s'il est automatisé et laissé sans surveillance.
Par conséquent, j'ai essayé de vérifier l'état du réseau et de me reconnecter dans le script, je vais donc le présenter.
(Je ne sais pas pourquoi vous n'avez pas d'accès Internet en premier lieu, alors faites-moi savoir qui vous êtes.)
· Windows 7 ・ Anaconda3
Le contenu est principalement constitué de commandes Windows, mais j'appelle les commandes de Python car cela fait partie du script.
def is_ping_ok():
proc = subprocess.run(["ping", "yahoo.co.jp"], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
ret = proc.stdout.decode("cp932")
if "Pas trouvé" in ret:
return False
else: return True
def restart_network():
subprocess.run(["netsh", "wlan", "disconnect"])
subprocess.run(["netsh", "wlan", "connect", 'name="SSID auquel vous souhaitez vous connecter"'])
time.sleep(5)
def check_network():
if not is_ping_ok():
restart_network()
if is_ping_ok():
return "Restarted!"
else: return "Error"
return "OK"
Pour le moment, je l'essaie une fois et j'abandonne si ça ne revient pas, mais si vous n'aimez pas perdre, je pense que vous pouvez revenir en arrière jusqu'à ce que ça revienne.
Utilisez la commande ping pour vérifier si vous avez accès à Internet. Pour le sous-processus qui est apparu soudainement, veuillez vous reporter à cet article.
Ce qui suit est pour l'accès Internet
>>> import subprocess
>>> proc = subprocess.run(["ping","yahoo.co.jp"], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
>>> print(proc.stdout.decode("cp932"))
yahoo.co.jp [182.22.59.229]32 octets de données envoyant un ping à:
182.22.59.Réponse de 229:Nombre d'octets=32 heures=11ms TTL=50
182.22.59.Réponse de 229:Nombre d'octets=32 heures=16ms TTL=50
182.22.59.Réponse de 229:Nombre d'octets=32 heures=21ms TTL=50
182.22.59.Réponse de 229:Nombre d'octets=32 heures=21ms TTL=50
182.22.59.229 statistiques de ping:
Nombre de paquets:Envoyer=4, recevoir=4, perte= 0 (0%Perte)、
Durée approximative du trajet aller-retour(milliseconde):
le minimum=11 ms, maximum=21 ms, en moyenne= 17ms
Sans accès Internet
>>> proc = subprocess.run(["ping","yahoo.co.jp"], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
>>> print(proc.stdout.decode("cp932"))
Héberger Yahoo dans la demande de ping.co.jp n'a pas été trouvé. Vérifiez le nom d'hôte et réessayez.
Si la valeur de retour contient "introuvable", nous avons décidé de déterminer qu'il n'y a pas d'accès Internet. Je pense que cela dépend de la langue du terminal.
def is_ping_ok():
proc = subprocess.run(["ping", "yahoo.co.jp"], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
ret = proc.stdout.decode("cp932")
if "Pas trouvé" in ret:
return False
else: return True
Si vous n'avez pas accès à Internet, essayez de vous reconnecter au réseau avec la commande suivante. Pour plus de détails sur la commande, reportez-vous à cet article.
> netsh wlan disconnect
Interface"Connexion réseau sans fil"La demande de déconnexion a abouti.
> netsh wlan connect name="SSID auquel vous souhaitez vous connecter"
La demande de connexion s'est terminée avec succès.
Lorsqu'il est appelé avec python, ce sera comme suit. Je mets en veille pour ne pas passer au processus suivant sans avoir terminé la connexion.
def restart_network():
subprocess.run(["netsh", "wlan", "disconnect"])
subprocess.run(["netsh", "wlan", "connect", 'name="SSID auquel vous souhaitez vous connecter"'])
time.sleep(5)
J'ai présenté comment lutter contre le soudain "pas d'accès Internet".
Nous recherchons une manière plus intelligente.
Recommended Posts