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 then
travaux, il se déconnecte du Wi-Fi et le reconnecte, mais le problème vient de la if
partie, 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
.
delay 300
juste avant,repeat end
pour empêcher le script de rechercher en permanence une connexion. 300 secondes le feraient vérifier toutes les 5 minutes.Réponses:
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:
Ensuite, vous pouvez mettre ce que vous voulez faire dans une déclaration if comme:
Le gestionnaire:
la source
Can’t make «handler checkInternetConnection» into type boolean
À 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.
la source