Comment écrire un AppleScript qui se reconnecte automatiquement au Wi-Fi?


3

Parfois, j'ai besoin de télécharger de très gros fichiers à partir d'Internet en utilisant des torrents (j'utilise Transmission) et le Wi-Fi tombe toujours. J'ai acheté plusieurs routeurs et modems et aucun d'entre eux ne fonctionne. Je rencontre ce problème depuis un moment (environ 10 ans, sous Windows et Mac).

Maintenant, j'ai décidé d'apprendre un peu et d'écrire du code AppleScript qui se reconnecte automatiquement:

repeat
if (do shell script "curl --connect-timeout 1 <WIFI_IP>") = "curl: (7) couldn't connect to host" then
    do shell script "networksetup -setairportpower AirPort off"
    do shell script "networksetup -setairportpower AirPort on"
    do shell script "networksetup -setairportnetwork en1 <ROUTER_NAME> <ROUTER_PASS>"
end if
end repeat

la partie après les thentravaux, il se déconnecte du Wi-Fi et le reconnecte, mais le problème vient de la ifpartie, car je ne sais pas comment détecter le moment où la connexion Wi-Fi est interrompue par le torrent. Comment dois-je faire cela?

En outre, une répétition avec un intervalle serait vraiment bien, quelque chose comme: repeat every 10 seconds.


J'ajouterais un délai, comme delay 300juste avant, repeat endpour empêcher le script de rechercher en permanence une connexion. 300 secondes le feraient vérifier toutes les 5 minutes.
Vickash

Réponses:


1

Voici un simple gestionnaire Appplescript que j'ai écrit il y a quelque temps pour résoudre ce problème. Il envoie une commande ping au serveur OpenDNS (tous deux pour la redondance) pour vérifier si la connexion Internet est active. Il retourne true en cas de succès, false en cas d'échec. Copiez-le simplement dans votre script et appelez-le comme suit:

set connected to checkInternetConnection

Ensuite, vous pouvez mettre ce que vous voulez faire dans une déclaration if comme:

if connected then
    -- Do stuff here
end if

Le gestionnaire:

on checkInternetConnection()
    -- Ping the primary OpenDNS server.
    try
        set pingResult1 to do shell script "ping -c 1 208.67.222.222"
    on error
        set pingResult1 to ""
    end try

    -- Check the results returned and return true or false.
    set p to number of paragraphs in pingResult1
    if p < 5 then
        -- Ping another Open DNS server for redundancy.
        try
            set pingResult2 to do shell script "ping -c 1 208.67.220.2220"
        on error
            set pingResult2 to ""
        end try

        set p to number of paragraphs in pingResult2
        if p < 5 then return false
    else
        return true
    end if
end checkInternetConnection

renvoie une erreurCan’t make «handler checkInternetConnection» into type boolean
ljs.dev

0

À la maison, je gère un script Perl appelé ping-random-server. Chaque fois que je soupçonne un problème de réseau, je le lance. Le ping est une option pour vous aussi. Exécutez une commande ping avec un nombre limité de requêtes ping sur une adresse IP ou un nom d'hôte connu pour répondre à une requête ping, et agissez si la requête ping renvoie 100% de perte de paquets.

Pour savoir comment intégrer cela dans votre pommecript, essayez

if (script shell "ping -c 10 www.whitehouse.gov | grep transmis") = "10 paquets transmis, 0 paquets reçus, 100,0% de pertes de paquets"

Je n'ai pas testé cela autrement qu'en exécutant les commandes ping dans Terminal et en examinant le résultat.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.