¿Cómo escribo un AppleScript que se vuelve a conectar automáticamente a Wi-Fi?

3

A veces necesito descargar archivos muy grandes de Internet usando torrents (estoy usando Transmission) y la conexión Wi-Fi siempre se cae. Compré varios enrutadores y módems y ninguno de ellos funciona. He estado teniendo este problema por un tiempo (~ 10 años, tanto con Windows como con Mac).

Ahora decidí aprender un poco y escribir algunos AppleScript que se reconectan automáticamente:

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 parte después de que then funciona, se desconecta de Wi-Fi y la vuelve a conectar, pero el problema está en la parte if , porque no sé cómo detectar cuándo se interrumpe la conexión Wi-Fi. el torrente ¿Cómo debo hacer esto?

Además, una repetición con un intervalo sería realmente agradable, algo como: repeat every 10 seconds .

    
pregunta Adam 04.12.2011 - 16:23

2 respuestas

1

Aquí hay un simple controlador de Appplescript que escribí hace un tiempo para resolver este problema exacto. Hace ping al servidor OpenDNS (ambos por redundancia) para verificar si la conexión a internet está funcionando. Devuelve verdadero en el éxito, falso en el fracaso. Simplemente cópielo en su script y llámelo como:

set connected to checkInternetConnection

Luego puedes poner lo que quieras hacer en una declaración if como:

if connected then
    -- Do stuff here
end if

El controlador:

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
    
respondido por el Vickash 03.01.2012 - 20:43
0

En casa, mantengo un script perl llamado ping-random-server. Siempre que sospecho un problema de red, lo ejecuto. Ping es una opción para ti también. Ejecute un comando de ping con un número limitado de pings contra una dirección IP o un nombre de host que responden al ping, y tome medidas si el ping devuelve el 100% de pérdida de paquetes.

En cuanto a cómo encajar esto en tu applecript, prueba

if (do script de shell "ping -c 10 www.whitehouse.gov | grep transmitido")="10 paquetes transmitidos, 0 paquetes recibidos, 100% de pérdida de paquetes"

No he probado esto más que ejecutando los comandos ping en la Terminal y examinando la salida.

    
respondido por el bneely 04.12.2011 - 20:03

Lea otras preguntas en las etiquetas