Habilitar / deshabilitar Time Machine dependiendo del tipo de conexión de red

9

No tengo una excelente configuración de Wi-Fi aquí en casa y a veces resulta en copias de seguridad fallidas de Time Machine. ¿Hay alguna forma de especificar que Time Machine solo realiza copias de seguridad en determinadas circunstancias, es decir, la conexión Ethernet está activa ...?

    
pregunta babelmonk 25.08.2013 - 11:41

3 respuestas

6

Esta es una alternativa al otro script que publiqué. Este se ejecuta en segundo plano y prueba la conexión de red cada dos minutos para determinar si está utilizando una conexión Ethernet o inalámbrica. Si está en Ethernet, habilita Time Machine; cuando la conexión pasa a ser inalámbrica, se desactiva Time Machine.

Paso 1: Verificación del sistema

Mientras esté conectado a Ethernet, deberá ejecutar un comando manualmente para confirmar a qué interfaz Ethernet está asignada. Ejecuta este comando:

ifconfig

Debería salir una pantalla llena de información. Lo que está buscando es una sección etiquetada como en con un número detrás de ella, y cuya última línea es status: active , como esta:

en1: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
    options=b<RXCSUM,TXCSUM,VLAN_HWTAGGING>
    ether 00:25:00:ef:30:3c 
    inet6 fe80::225:ff:feef:303c%en1 prefixlen 64 scopeid 0x5 
    inet 192.168.1.68 netmask 0xffffff00 broadcast 192.168.1.255
    media: autoselect (100baseTX <full-duplex>)
    status: active

Tenga en cuenta el número al lado de en al principio: esta es la interfaz en la que se está ejecutando su conexión Ethernet.

Paso 2: crea la aplicación AppleScript

En la siguiente secuencia de comandos, donde dice set wired_interface to "0" , cambia 0 al número junto a en en la salida anterior. (Debería ser 0; si está en un Mac Pro, puede ser 1.) También en el siguiente script, en la parte superior donde dice myusername , sustituya su propio nombre de usuario de Mac.

-- Edit variables here --
global current_username
set current_username to "myusername"
global wired_interface
set wired_interface to "0"

-- DO NOT EDIT BELOW THIS LINE --
global last_connection
set last_connection to "wireless"

on idle
    if (do shell script "ifconfig en" & wired_interface & " | awk '/inet/ {print $2}'") is not equal to "" then
        -- on ethernet
        if last_connection is equal to "wireless" then
            -- turn TM on
            -- else do nothing, we're still on ethernet
            set last_connection to "ethernet"
            do shell script "sudo /Users/" & current_username & "/TMSwitch/TM_On.csh"
        end if
    else
        -- on wireless
        if last_connection is equal to "ethernet" then
            -- turn tm off
            -- else do nothing, we're still on wireless
            set last_connection to "wireless"
            do shell script "sudo /Users/" & current_username & "/TMSwitch/TM_Off.csh"
        end if
    end if
    return 120
end idle

+ s para guardar. En la hoja de propiedades Guardar, establezca el File Format como Application , y marque la casilla para Stay open after run handler . Guárdelo donde desee, en el escritorio o en la carpeta de aplicaciones, realmente no importa, solo sepa dónde lo guardó.

Paso3:crearlosscriptsdeshell

Acontinuación,abralaTerminal.Escribelossiguientescomandos:

cd~/mkdirTMSwitchcdTMSwitchpicoTM_On.csh

Peguelasiguientelíneaen:

defaultswrite/Library/Preferences/com.apple.TimeMachineAutoBackup-boolTRUE

Presionecontrol+x,escribayypresionereturnparaguardarysalir.Luegoejecutaestecomando:

picoTM_Off.csh

Yenestearchivopeguelasiguientelínea:

defaultswrite/Library/Preferences/com.apple.TimeMachineAutoBackup-boolFALSE

Nuevamente,control+x,luegoyyregresaparaguardarysalir.

Acontinuación,ingreseestoscomandos:

chmod4555TM_O*.cshchownrootTM_O*.csh

Paso4:configurarsudoparaejecutarsincontraseña

DejarqueelcomandodeTerminalsudoseejecutesinunacontraseñapuedesermuypeligroso.Esporesoquelospasosanteriorescrearonlosscriptsdeshellensupropiodirectorio,porloqueloquerealmentesepuedeejecutareslimitado.

IngreseelsiguientecomandoenlaTerminal:

sudopico/etc/sudoers

Luegoingresesucontraseñadeadministradorcuandoselesolicite.

Estopuedellevarloaunapantalla(ensumayoría)enblanco,opuedeteneralgodetexto.Siestáenblanco,estábien.Simplementepegaráslalíneadeabajoenlapartesuperior.Sieltextoyaexiste,esotambiénestábien;usalaflechahaciaabajoparairjustodebajodelaslíneasqueyaestánenlasección#Userprivilegespecification,comoseveenlasiguientecapturadepantalla.

Aquí, agregue la siguiente línea:

<yourusername> ALL = NOPASSWD: /Users/<yourusername>/TMSwitch/*

En ambos lugares donde aparece <yourusername> , reemplácelo con su nombre de usuario de Mac. Presione control + x , escriba y y presione regresar para guardar y salir.

Pruebe que estos archivos activan y desactivan Time Machine ejecutando el siguiente comando (suponiendo que Time Machine está actualmente activado):

sudo ./TM_Off.csh

Después de un momento, el ícono de Time Machine en la barra de menú debería ponerse gris, lo que indica que Time Machine está apagado. (Es posible que deba hacer clic en el icono para que refleje el cambio). Suponiendo que esto funcione, ejecute este comando:

sudo ./TM_On.csh

Y Time Machine debería volver a habilitarse.

Y listo!

Ejecute la aplicación que creó anteriormente en el Editor AppleScript, y permanecerá abierta, habilitando y deshabilitando Time Machine cuando su conexión cambie de Ethernet a inalámbrica y viceversa. Para deshabilitar el cambio, simplemente cierre la aplicación AppleScript (haga clic con el botón derecho en el icono en el Dock y elija Salir).

    
respondido por el tubedogg 27.08.2013 - 02:50
6

Este AppleScript verificará si la conexión Ethernet está activa, y luego ejecutará una copia de seguridad de Time Machine si es así.

Primero, deshabilita Time Machine en Preferencias del Sistema. El siguiente método lo ejecutará automáticamente.

Mientras esté conectado a Ethernet , deberá ejecutar un comando manualmente para confirmar a qué interfaz Ethernet está asignada. Ejecuta este comando:

ifconfig

Debería salir una pantalla llena de información. Lo que está buscando es una sección etiquetada como en con un número detrás de ella, y cuya última línea es status: active , como esta:

en1: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
    options=b<RXCSUM,TXCSUM,VLAN_HWTAGGING>
    ether 00:25:00:ef:30:3c 
    inet6 fe80::225:ff:feef:303c%en1 prefixlen 64 scopeid 0x5 
    inet 192.168.1.68 netmask 0xffffff00 broadcast 192.168.1.255
    media: autoselect (100baseTX <full-duplex>)
    status: active

Note el número al lado de en al principio: esta es la interfaz en la que se está ejecutando su conexión Ethernet. En la secuencia de comandos a continuación, donde dice en9 , reemplace 9 con el número de arriba. (Si tienes un Mac Pro, lo más probable es que sea en0 o en1 . De lo contrario, es probable que sea en0 .)

if (do shell script "ifconfig en9 | awk '/inet/ {print $2}'") is not equal to "" then
    do shell script "/System/Library/CoreServices/backupd.bundle/Contents/Resources/backupd-helper &"
end if

Guarde esto como EthernetTimeMachine.scpt en su carpeta de inicio ( /Users/<yourusername>/ ).

A continuación, abra la Terminal y escriba el siguiente comando:

pico ~/crontab

Esto abrirá un editor de texto para permitirte programar esta secuencia de comandos para que se ejecute cada hora, al igual que Time Machine lo hace de forma predeterminada. Pega esta línea:

@hourly osascript ~/<yourusername>/EthernetTimeMachine.scpt

Presione control + X luego escriba y y presione return para guardar y salir.

Para deshabilitarlo, vuelva a la Terminal, nuevamente use el comando:

pico ~/crontab

Luego elimine la línea que agregó anteriormente y siga los mismos pasos para guardar y salir.

    
respondido por el tubedogg 25.08.2013 - 16:39
-1

Puede abrir sus preferencias de red y asegurarse de que Ethernet sea la conexión principal en la orden de servicio. Puedes ver lo que quiero decir en esta captura de pantalla, espero.

Luego, si Ethernet está conectado, siempre debe usarlo como su conexión principal.

Consulte aquí cómo configurar la prioridad del servicio: enlace

    
respondido por el user55785 25.08.2013 - 11:47

Lea otras preguntas en las etiquetas