3 votos

¿Cómo puedo escribir un AppleScript que auto se vuelve a conectar a una red Wi-Fi?

A veces necesito descargar muy grande de archivos desde internet usando torrents (yo estoy usando la Transmisión) y el Wi-Fi siempre cae. He comprado varios routers y módems y ninguna de ellas funciona. He tenido este problema, una por un tiempo (~10 años, con Windows y Mac).

Ahora me he decidido a aprender un poco, y escribir algunas AppleScript que se vuelve a conectar 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 la then obras, se desconecta de la red Wi-Fi y se vuelve a conectar, pero el problema es con el if parte, porque no sé cómo detectar cuando la conexión Wi-Fi es roto por el torrent. ¿Cómo debo hacerlo?

También, se repite con un intervalo sería realmente agradable, algo así como: repeat every 10 seconds.

1voto

Boro Puntos 496

He aquí un simple Appplescript controlador escribí hace un tiempo para resolver este problema exacto. Hace ping a los de OpenDNS servidor (dos de ellos para la redundancia) para comprobar si la conexión a internet. Devuelve true en caso de éxito, false en caso de error. Acaba de copiar en tu script, y lo llaman como:

set connected to checkInternetConnection

A continuación, puedes poner lo que quieras hacer en una instrucció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

0voto

Brian Puntos 48423

En casa, mantener un script en perl llamado ping-al azar-servidor. Siempre que tengo la sospecha de un problema de red, yo lo ejecute. ping es una opción para usted. Ejecutar un comando ping con un limitado número de pings en contra de una dirección ip o nombre de host conocidos para responder a ping, y tomar medidas si el comando ping devuelve el 100% de pérdida de paquetes.

En cuanto a cómo encajar esto en su applescript, trate de

si (do shell script "ping -c 10 www.whitehouse.gov | grep de transmisión sexual") = "10 paquetes transmitidos, 0 paquetes recibidos, el 100.0% de pérdida de paquetes"

Yo no he probado este otro que al ejecutar el comando ping comandos en la Terminal y el examen de la salida.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X