9 votes

Activer/désactiver Time Machine en fonction du type de connexion réseau

Je n'ai pas une excellente installation Wi-Fi à la maison et cela entraîne parfois l'échec des sauvegardes Time Machine. Existe-t-il un moyen de spécifier que Time Machine ne sauvegarde que dans certaines circonstances - par exemple, si la connexion Ethernet est active... ?

6voto

tubedogg Points 14839

Cet AppleScript vérifie si la connexion Ethernet est active, puis lance une sauvegarde Time Machine si c'est le cas.

Tout d'abord, désactivez Time Machine dans les préférences système. La méthode ci-dessous le lancera automatiquement.

En cas de connexion à l'Ethernet Vous devrez exécuter une commande manuellement pour confirmer l'interface à laquelle Ethernet est assigné. Exécutez cette commande :

ifconfig

Il devrait afficher un écran rempli d'informations. Ce que vous recherchez, c'est une section intitulée en suivi d'un numéro, et dont la dernière ligne est status: active comme ceci :

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

Notez le numéro à côté de en au début - il s'agit de l'interface sur laquelle fonctionne votre connexion Ethernet. Dans le script ci-dessous, où il est dit en9 , remplacer 9 avec le numéro ci-dessus. (Si vous avez un Mac Pro, il s'agira probablement de en0 ou en1 . Dans le cas contraire, il sera probablement 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

Enregistrer sous EthernetTimeMachine.scpt dans votre dossier personnel ( /Users/<yourusername>/ ).

Ouvrez ensuite Terminal et tapez la commande suivante :

pico ~/crontab

Cela ouvrira un éditeur de texte qui vous permettra de programmer ce script pour qu'il s'exécute toutes les heures, tout comme Time Machine le fait par défaut. Collez cette ligne :

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

Presse control + X puis tapez y et appuyez sur return pour enregistrer et quitter.

Pour le désactiver, retournez dans le terminal et utilisez à nouveau la commande :

pico ~/crontab

Ensuite, supprimez la ligne que vous avez ajoutée ci-dessus et procédez de la même manière pour enregistrer et quitter.

6voto

tubedogg Points 14839

Il s'agit d'une alternative à l'autre script que j'ai posté. Celui-ci s'exécute en arrière-plan et teste la connexion réseau toutes les deux minutes pour déterminer s'il s'agit d'une connexion Ethernet ou sans fil. S'il s'agit d'une connexion Ethernet, il active Time Machine ; lorsque la connexion passe à une connexion sans fil, il désactive Time Machine.

Étape 1 : Vérification du système

Lorsque vous êtes connecté à Ethernet, vous devez exécuter une commande manuellement pour confirmer l'interface à laquelle Ethernet est assigné. Exécutez cette commande :

ifconfig

Il devrait afficher un écran rempli d'informations. Ce que vous recherchez, c'est une section intitulée en suivi d'un numéro, et dont la dernière ligne est status: active comme ceci :

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

Notez le numéro à côté de en au début - il s'agit de l'interface sur laquelle fonctionne votre connexion Ethernet.

Étape 2 : Création de l'application AppleScript

Dans le script ci-dessous, où il est dit set wired_interface to "0" , modifier le 0 jusqu'au numéro situé à côté de en dans le résultat ci-dessus. (Ce devrait être 0 ; si vous êtes sur un Mac Pro, il se peut que ce soit 1.) Dans le script ci-dessous, en haut, là où il est dit myusername , remplacez votre propre nom d'utilisateur 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 à épargner. Dans la feuille de propriétés Enregistrer, définissez le champ File Format comme Application et cochez la case Stay open after run handler . Enregistrez-la où vous le souhaitez - Bureau ou dossier d'applications - peu importe, il suffit de savoir où vous l'avez enregistrée.

AppleScript Editor Save dialog box showing the File Format set to Application, and box checked for Stay open after run handler

Étape 3 : Créer les scripts du shell

Ensuite, ouvrez Terminal. Tapez les commandes suivantes :

cd ~/
mkdir TMSwitch
cd TMSwitch
pico TM_On.csh

Collez la ligne suivante :

defaults write /Library/Preferences/com.apple.TimeMachine AutoBackup -bool TRUE

Presse control + x , type y et appuyez sur return pour enregistrer et quitter. Exécutez ensuite la commande suivante :

pico TM_Off.csh

Et dans ce fichier, collez la ligne suivante :

defaults write /Library/Preferences/com.apple.TimeMachine AutoBackup -bool FALSE

Encore une fois, control + x alors y y return pour enregistrer et quitter.

Entrez ensuite les commandes suivantes :

chmod 4555 TM_O*.csh
chown root TM_O*.csh

Étape 4 : Mise en place sudo pour fonctionner sans mot de passe

Laisser la commande Terminal sudo L'exécution d'un programme sans mot de passe peut être très dangereuse. C'est pourquoi les étapes ci-dessus ont créé les scripts de l'interpréteur de commandes dans leur propre répertoire, de sorte que ce qui peut être exécuté est limité.

Entrez la commande suivante dans Terminal :

sudo pico /etc/sudoers

Saisissez ensuite votre mot de passe d'administrateur lorsque vous y êtes invité.

Il se peut que vous arriviez à un écran (en grande partie) vierge, ou qu'il contienne du texte. Si l'écran est vide, ce n'est pas grave. Vous collerez simplement la ligne ci-dessous en haut de l'écran. Si du texte existe déjà, c'est également bien ; utilisez votre flèche vers le bas pour aller juste en dessous des lignes déjà présentes dans l'écran. # User privilege specification comme le montre la capture d'écran ci-dessous.

Terminal screenshot showing the sudoers file open in Pico

Ici, ajoutez la ligne suivante :

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

Dans les deux endroits où <yourusername> apparaît, remplacez-le par votre nom d'utilisateur Mac. Appuyez sur control + x , type y et appuyez sur return pour enregistrer et quitter.

Testez que ces fichiers activent et désactivent Time Machine en exécutant la commande suivante (en supposant que Time Machine est actuellement activé) :

sudo ./TM_Off.csh

Au bout d'un moment, l'icône Time Machine de la barre de menus devient grise, ce qui indique que Time Machine est désactivé. (Il se peut que vous deviez cliquer sur l'icône pour qu'elle reflète le changement). Si cela fonctionne, exécutez la commande suivante :

sudo ./TM_On.csh

Et Time Machine devrait être réactivé.

Et c'est parti

Exécutez l'application que vous avez créée dans l'Éditeur AppleScript ci-dessus, et elle restera ouverte, activant et désactivant Time Machine lorsque votre connexion passera d'Ethernet à sans fil et vice-versa. Pour désactiver la commutation, il suffit de fermer l'application AppleScript (cliquez avec le bouton droit de la souris sur l'icône dans le Dock et choisissez Quitter).

-1voto

kecman Points 121

Vous pouvez ouvrir vos préférences réseau et vous assurer qu'Ethernet est la première connexion dans l'ordre des services. Vous pouvez voir ce que je veux dire sur cette capture d'écran, j'espère.

Ensuite, si Ethernet est connecté, vous devez toujours l'utiliser comme connexion principale.

Voir ici comment définir la priorité du service : http://osxdaily.com/2013/06/15/set-network-connection-priority-mac-os-x/

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X