Relancé de "pas d'accès Internet" en Python

introduction

** Souffrez-vous tous d'un "pas d'accès Internet" soudain? ** **

netsh_test1 (3)_LI.jpg

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.)

environnement

· Windows 7 ・ Anaconda3

Conclusion (code) pour le moment

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.

Commentaire

Vérifier l'état du réseau

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

Redémarrage du réseau

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)

Résumé

J'ai présenté comment lutter contre le soudain "pas d'accès Internet".

Nous recherchons une manière plus intelligente.

Recommended Posts

Relancé de "pas d'accès Internet" en Python
Accéder à bitcoind depuis python
OCR à partir de PDF en Python
Accéder à Oracle DB depuis Python
Essayez l'accès au registre PLC en Python
Extraire du texte d'images avec Python
Il n'y a pas de commutateur en python
Comment accéder à wikipedia depuis python
Accéder aux feuilles de calcul à partir de Python à l'aide d'OAuth 2.0
Accéder aux nœuds de shader de Blender depuis Python
Accéder à l'API Twitter avec Python
Extraire des chaînes de fichiers avec Python
Obtenez des taux de change à partir des taux de change ouverts en Python
Empêcher le double lancement de cron en Python
Dans python + sqlite3 "OperationalError: no such column:"
Accès exclusif aux fichiers entre les processus en Python
Comment accéder à RDS depuis Lambda (python)
Télécharger des images à partir de la liste d'URL en Python
Obtenez le niveau de la batterie de SwitchBot avec Python
ModuleNotFoundError en Python: aucun module nommé story
Générer une classe à partir d'une chaîne en Python
Générer un langage C à partir d'une expression S avec Python
Accéder aux ressources S3 via Cognito en Python
Convertir de Markdown en HTML en Python
Obtenez la probabilité de précipitation de XML avec Python
Erreur d'importation: aucun module nommé "xxxxxx" dans Python3
Obtenir l'historique des métriques de MLflow en Python
Obtenez des données de séries chronologiques de k-db.com avec Python
Quadtree en Python --2
Python en optimisation
CURL en Python
Métaprogrammation avec Python
Python 3.3 avec Anaconda
Géocodage en python
SendKeys en Python
Méta-analyse en Python
Unittest en Python
Du dessin de fichier au graphique en Python. Élémentaire élémentaire
Époque en Python
Discord en Python
ModuleNotFoundError: Erreur de module nommé'_bz2 'en Python dans pyenv
Allemand en Python
DCI en Python
sql à sql
tri rapide en python
nCr en python
N-Gram en Python
Programmation avec Python
Charger et exécuter la commande depuis yml avec python
Utilisez Python dans votre environnement depuis Win Automation
Plink en Python
Constante en Python
MeCab de Python
FizzBuzz en Python
Sqlite en Python
Étape AIC en Python
Appel de scripts Python à partir de Python intégré en C ++ / C ++
Créer un objet datetime à partir d'une chaîne en Python (Python 3.3)
Charger des images à partir d'une URL à l'aide de Pillow dans Python 3