Abilita / disabilita Time Machine in base al tipo di connessione di rete

9

Non ho una grande configurazione Wi-Fi qui a casa e a volte risulta in backup di Time Machine falliti. C'è un modo per specificare che Time Machine esegue il backup solo in determinate circostanze, ad esempio la connessione Ethernet è attiva ...?

    
posta babelmonk 25.08.2013 - 11:41
fonte

3 risposte

6

Questa è un'alternativa all'altra sceneggiatura che ho postato. Questo viene eseguito in background e verifica la connessione di rete ogni due minuti per determinare se sta utilizzando una connessione Ethernet o wireless. Se su Ethernet, abilita Time Machine; quando la connessione passa a wireless disattiva Time Machine.

Passaggio 1: verifica del sistema

Durante la connessione a Ethernet, è necessario eseguire manualmente un comando per confermare a quale interfaccia è assegnato Ethernet. Esegui questo comando:

ifconfig

Dovrebbe produrre uno schermo pieno di informazioni. Quello che stai cercando è una sezione con etichetta en con un numero dopo di essa e la cui ultima riga è status: active , come questa:

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

Nota il numero accanto a en all'inizio: questa è l'interfaccia su cui è in esecuzione la tua connessione Ethernet.

Passaggio 2: crea l'applicazione AppleScript

Nello script seguente, dove viene indicato set wired_interface to "0" , modifica 0 nel numero accanto a en nell'output precedente. (Dovrebbe essere 0; se sei su un Mac Pro, potrebbe essere 1.) Inoltre nello script seguente, nella parte superiore dove si dice myusername , sostituisci il tuo nome utente 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 per salvare. Nella finestra di dialogo Salva, imposta File Format come Application e seleziona la casella per Stay open after run handler . Salva dove vuoi - Desktop o Cartella delle applicazioni: non importa, basta sapere dove l'hai salvato.

Passaggio3:crearegliscriptdishell

Quindi,apriTerminale.Digitaiseguenticomandi:

cd~/mkdirTMSwitchcdTMSwitchpicoTM_On.csh

incollalaseguenterigain:

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

Premerecontrollo+x,digitareyepremerereturnpersalvareeduscire.Quindieseguiquestocomando:

picoTM_Off.csh

Einquestofileincollarelaseguenteriga:

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

Ancora,controllo+x,quindiyeritornopersalvareeduscire.

Successivamente,inserisciquesticomandi:

chmod4555TM_O*.cshchownrootTM_O*.csh

Passaggio4:impostazionesudoperl'esecuzionesenzapassword

LasciandocheilcomandoTerminalesudofunzionisenzapasswordpuòesseremoltopericoloso.Eccoperchéipassaggiprecedentihannocreatogliscriptdellashellnellapropriadirectory,quindiciòchepuòessereeffettivamenteeseguitoèlimitato.

InserisciilseguentecomandonelTerminale:

sudopico/etc/sudoers

Quindiinseriscilapassworddell'amministratorequandorichiesto.

Questopotrebbeportartiaunoschermo(prevalentemente)vuoto,opotrebbeconteneredeltesto.Seèvuoto,vabene.Dovraisemplicementeincollarelarigainbassonellapartesuperiore.Seiltestoesistegià,vabeneanchequesto;usalatuafrecciagiùperandaredirettamentesottolelineegiànellasezione#Userprivilegespecification,comemostratonelloscreenshotquisotto.

Qui, aggiungi la seguente riga:

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

In entrambi i casi in cui viene visualizzato <yourusername> , sostituiscilo con il tuo nome utente Mac. Premi controllo + x , digita y e premi return per salvare ed uscire.

Verifica che questi file accendano e spengano la Time Machine eseguendo il seguente comando (supponendo che Time Machine sia attivo):

sudo ./TM_Off.csh

Dopo un attimo, l'icona Time Machine nella barra dei menu dovrebbe diventare grigia, ad indicare che Time Machine è disattivata. (Potrebbe essere necessario fare clic sull'icona per riflettere la modifica). Supponendo che funzioni, esegui questo comando:

sudo ./TM_On.csh

E Time Machine dovrebbe essere riattivato.

E Off You Go

Eseguire l'applicazione creata in AppleScript Editor in alto, e rimarrà aperta, abilitando e disabilitando Time Machine mentre la connessione passa da Ethernet a wireless e viceversa. Per disabilitare il passaggio, basta chiudere l'applicazione AppleScript (fai clic con il pulsante destro del mouse sull'icona nel Dock e scegli Esci).

    
risposta data 27.08.2013 - 02:50
fonte
6

Questo AppleScript controllerà se la connessione Ethernet è attiva, quindi eseguirà un backup di Time Machine in caso affermativo.

Per prima cosa, disattiva Time Machine in Preferenze di Sistema. Il metodo seguente lo eseguirà automaticamente.

Mentre è connesso a Ethernet , è necessario eseguire manualmente un comando per confermare a quale interfaccia è assegnato Ethernet. Esegui questo comando:

ifconfig

Dovrebbe produrre uno schermo pieno di informazioni. Quello che stai cercando è una sezione con etichetta en con un numero dopo di essa e la cui ultima riga è status: active , come questa:

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

Nota il numero accanto a en all'inizio: questa è l'interfaccia su cui è in esecuzione la tua connessione Ethernet. Nello script seguente, dove dice en9 , sostituisci 9 con il numero di sopra. (Se hai un Mac Pro, molto probabilmente sarà en0 o en1 . Altrimenti, sarà probabilmente 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

Salva questo come EthernetTimeMachine.scpt nella tua cartella Inizio ( /Users/<yourusername>/ ).

Quindi apri Terminale e digita il seguente comando:

pico ~/crontab

Questo aprirà un editor di testo per consentirti di programmare questo script in modo che venga eseguito su base oraria, proprio come fa Time Machine per impostazione predefinita. Incolla questa riga:

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

Premi controllo + X quindi digita y e premi ritorno per salvare ed uscire.

Per disattivarlo, torna in Terminale, usa di nuovo il comando:

pico ~/crontab

Quindi elimina la riga che hai aggiunto sopra e usa gli stessi passaggi per salvare ed uscire.

    
risposta data 25.08.2013 - 16:39
fonte
-1

Puoi aprire le tue Preferenze di rete e assicurarti che Ethernet sia la connessione superiore nell'ordine di servizio. Puoi vedere cosa intendo in questo screenshot, spero.

Quindi, se Ethernet è connessa, dovresti sempre utilizzarla come connessione principale.

Vedi qui per come impostare la priorità del servizio: link

    
risposta data 25.08.2013 - 11:47
fonte

Leggi altre domande sui tag