Mac OS X : Reconnexion automatique d'une connexion VPN
Par Francis Besset le mercredi 21 avril 2010 - Systèmes | Lien permanent

En utilisant un VPN gratuit avec mon mac, j'ai parfois un problème de déconnexion. J'ai cherché une technique me permettant de le reconnecter automatiquement. Car il faut le savoir, Mac OS X ne propose pas d'option pour reconnecter automatiquement la connexion VPN.
Heureusement, j'ai trouvé une solution qui permet de le reconnecter automatiquement.
Je suis allé un p'tit peu plus loin en ajoutant une fonctionnalité qui me permet de quitter un programme lorsque le VPN est déconnecté et le relance quand le VPN est à nouveau connecté.
Le programme en question est Transmission. C'est un client BitTorrent qui me permet de télécharger aisément les dernières versions des distributions Gnu/Linux libres et de les partager à mon tour.
Pour rentrer dans le vif du sujet, nous allons commencer par ouvrir notre éditeur d'AppleScript. Il se trouve dans Application > Utilitaires.
Dans l'éditeur copiez/collez le script ci-dessous. Vous pouvez bien sûr l'adapter à vos besoins. Je pense que le code est assez documenté. Pour ce qu'il ne l'est pas, j'estime que l'AppleScript est assez compréhensible.
Pour infos, la base de ce script vient du forum MacBidouille.
on idle
tell application "System Events" to tell current location of network preferences
set t_service to service "VPN name" -- nom de votre connexion VPN
if not connected of current configuration of t_service then
tell application "Transmission" to quit yes -- Ferme Transmission en sauvegardant les paramètres
connect t_service
else
tell application "System Events"
if not (exists process "Transmission") then
tell application "Transmission"
open ""
set frontmost to false
end tell
end if
end tell
end if
end tell
return 5 -- Vérification toutes les 5 secondes
end idle
Dans ce script, vous devez personnaliser "VPN name" en laissant les guillemets. Vous pouvez trouver le nom à mettre en allant dans Préférences Système > Réseau.

Dans mon cas, je dois remplacer VPN name par Mon Vpn. Évitez simplement de mettre des accents dans le nom de votre connexion VPN.
Il vous faudra cliquer sur l'icône Compiler. Si tout se passe bien, il devrait coloriser votre code et l'indenter, sinon vous aurez le droit à un joli message vous indiquant l'erreur.
Ensuite, allez dans Fichier > Enregistrer sous. Vous devriez avoir une petite fenêtre apparaître. Choisissez l'endroit où vous souhaitez l'enregistrer.
Concernant les autres options, pour Format de fichier, choisissez Application. Pour les Options, cochez uniquement la case Rester en arrière-plan.
Allez dans le dossier où vous avez enregistré votre nouvelle application. Ouvrez-la, tout devrais se dérouler merveilleusement bien !
Ce qui est vraiment bien, c'est que vous pourrez éditer plus tard le script. Pour cela, il vous faudra simplement ouvrir l'éditeur puis Fichier > Ouvrir et allez chercher l'application.
J'espère que ça sortira bon nombre d'entre-vous des ennuis des déconnexions VPN.
Suite au commentaire de Batoust, je vais vous indiquer comment enlever l'alerte de Transmission lorsque l'on veut le quitter.
La manipulation est toute simple. Tout d'abord rendez-vous dans le menu Transmission > Préférences. Allez dans la partie Général puis décochez la case Avant de quitter avec des transferts actifs.




Commentaires
Merci pour ton tutoriel, il est très bien expliqué et très intéressant. Je recherchez un tutoriel comme celui ci.
Par contre transmission ne se ferme pas complètement, il demande si je veux vraiment quitter "Etes vous sur de vouloir quitter ...."
Peut on résoudre ce problème avec applescript ?
Je te remercie en tout cas pour tout ça
@Batoust : C'est dans les paramètres de Transmission que ça se règle. Il faut décocher une case permettant de désactiver le message demandant la confirmation.
Ce soir je rajoute dans l'article la manière de désactiver l'alerte.
Bonjour,
Merci pour le tutoriel. Si j'ai bien compris, le script garantit absolument l'anonymat de ma connexion puisque celle-ci ferme et rouvre désormais en fonction de l'activité de la connexion VPN.
Une question cependant. J'utilise une autre appli (uTorrent) dans ce script à la place de Transition. Lors du lancement du script, une fenêtre apparait : Il est impossible de régler frontmost of application "uTorrent" à false. Je suis novice en programmation, cette option est elle nécessaire au bon déroulé du script?
@etiennem : Salut !
L'option frontmost permet de définir si l'application doit-être au premier plan ou non.
En mettant false, l'application se mettra toujours au dernier plan ce qui te permettra d'utiliser tranquillement ton ordi pendant que le script tourne. :)
Grandiose! thanks!!
Génial !
Jamais touché à ça de ma vie...Donc une semaine à me décider et en 3 mn l'application a été créée et mise en route.
Merci Francis
Problème avec Vuze :
Merci pour votre tuto, j'ai voulu mettre l'application Vuze à la place de Transmission, les habitudes quoi :-)
Malheureusement Vuze ne comprend pas : set frontmost
if not (exists process "Vuze.app") then
tell application "Vuze"
open ""
_set frontmost to false_
end tell
end if
end tell
2 curiosités :
- dans tell application "", si vous écrivez Vuze.app il est transformé en Vuze, ce qui n'est pas le cas à la ligne précédente.
- j'ai fait un enregistrement des actions dans Applescript sur Vuze, sauf pour le lancement, rien ne se passe, j'en conclus (un peu vite ?) que Vuze n'est pas scriptable (?)
Pour qu'il quitte à la déconnexion et se lance à la connexion, il a fallu enlever le qualificatif de Quit (yes) et toute la ligne set fontmost. Ça roule :-)))
Grand merci pour votre AppleScript
PS : je me suis permis sur un forum de donner le lien de votre page et de mettre l'applescript pour Vuze.
Au cas où cela vous pose problème, dites le moi et je l'enlèverai.
J'aimerais ajouter à cette application applescript une ligne de commande, qui provoque la fermeture du logiciel p2p et de la connexion vpn lorsqu'on le quitte.
Bonjour
Dans quelle mesure cette commande efficace sur Mac peut-être utile pour un utilisateur de PC soumis au même problème.
Lifeguard ne semblant pas satisfaisant, ont-ils une possibilité de création comme celle-ci.
Merci Francis
après quelques recherche et bricolage, j'ai réussit à faire que lorsqu'on quitte l'Applet, Transmission se ferme et VPN se déconnecte.
après l'applescript de Francis vous ajouter :
on quit
tell application "Transmission" to quit yes
tell application "System Events"
tell current location of network preferences
set t_service to service "VPN name"
set isConnected to connected of current configuration of t_service
if isConnected then disconnect t_service
end tell
end tell
continue quit
end quit
je préfère ramasser mon courrier et les news sans VPN, c'est mon choix :-)
Il n'y a plus qu'à faire une jolie icône pour l'applet et le mettre dans le dock, la cerise sur le gâteau.
Bonjour à tous,
Effectivement, le script de Francis semble fonctionner parfaitement, 3mn pour le lire et le copier, Bravo pour le tuto qui va avec. L'ajout de BG est vraiment intéressant pour la relève du courrier.
Seulement, je suis sous MacOs X.5.8 et lors d'une déconnexion inopinée et/ou forcée du VPN, le script prend les choses en "main", redémarre selon la procédure établie par l'Applet, mais le démarrage de Transmission bloque sur un message - "" n'est pas un fichier torrent valide -. Je ne connais pas grand chose au sujet d'Applescript, mais il semblerait que ce soit la ligne - open "" - qui pose problème. Auriez-vous une idée pour me dépanner ? Merci à vous.
FB
MacOs X.5.8, PPC G4 2x1,42, Transmission 2.0.4
entre les guillemets essaies de mettre le nom du logiciel : Transmission ; pour moi cela marchait comme écrit ci-dessus avec Transmission.
J'ajoute qu'il faut se déconnecter si on veut mettre ses carnets d'adresse et d'iCal en synchro avec Plaxo.
Ah j'avais un G4 bi mais l'alim a sauté et c'est quasi impossible à changer ou à des coûts de nabab ;_;
rhhhhhhhhaaaaaaa lovely ! :) superbe script. Simple et efficace. Bravo et merci ! mis à part le nom du vpn j ai pas eu besoin de changer quoi que ce soit. mon MBP va chauffer :)
Le script marche sans problème, et c'était bien la première fois que je compilais de l'Applescript.
Pour ce qui concerne le problème du open "", j'ai simplement passé en commentaire la ligne en question, Transmission se lance toujours mais n'affiche pas la liste des torrents, tout en fonctionnant de la même façon pour le reste. Pour afficher la dite liste, il suffit de cliquer sur l'icône de Transmission dans le dock. Si quelqu'un a une meilleure proposition je suis preneur, n'ayant jamais fait d'Applescript je suis un peu limité dans mes options. Signalons enfin que très officiellement Transmission n'offre aucun support d'Applescript, trop de boulot pour l'implémenter d'après eux.
set frontmost to false
garde Transmission en arrière plan si je ne m'abuse ! :-))
Bonjour à tous !
Effectivement, "set to frontmost to false" garde Transmission en arrière plan. Il n'empêche que le message d'alerte - "" n'est pas un fichier torrent valide - persiste, lui aussi en arrière plan. S'il n'est pas validé, Transmission ne redémarre pas ses transferts actifs et un autre message d'erreur apparaît, plus tard, indiquant que le temps de fonctionnement de notre (celui de Francis et l'intérêt que nous lui portons) script est écoulé. Bien entendu et très aléatoirement, soit Transmission démarre ses transferts sans VPN, soit tout s'arrête purement et simplement sur le dernier message du script. Par deux fois, j'ai eu des "Kernel Panic".
Suivant les conseils de BG, j'ai essayé pleins de petits trucs, sans résultats. A chaque tentative, le script bloque !
Je voudrais faire une dernière remarque, le tuto de Francis est très bien fait et j'ai cru comprendre que tous les éléments du script devaient être colorisés à l'exécution de la compilation. Or, à la ligne -Open ""- les doubles guillemets étaient les seuls éléments restant noirs (ou gris).
Le fait d'être sous MacOs X.5.8 avec un double PPC est peut-être la source des erreurs de l'AppleScript. Ce dernier a sûrement évolué au passage à Snow !
Pour BG, mon G4 2x1,42 a aussi été malade de son alimentation, j'en ai trouvé 2, sur eBay, pour moins de 50 euros la pièce chez nos amis Anglais. J'en vois passer souvent régulièrement, en Allemagne et en Angleterre, sur le site précédemment cité. Au cas où, c'est une excellente machine, il est dommage de ne pas la réparer. Pour ma part, je considère qu'un investissement de cet ordre n'est pas excessif.
A Bombadil411, il serait intéressant que tu précises ton type de machine et ton Os, par recoupement, nous devrions trouver une solution au problème semblant n'affecter qu'un petit nombre d'entre nous.
Merci à Francis pour sa trouvaille et son superbe travail d'explications !
Bien amicalement,
FB
Salutatous,
remplacer
Open ""
par
Run
si cela ne marche pas, ajoutez à la ligne suivante un Activate
je suis sous 10.6 et je n'ai pas tenté de le faire sur ma PBG4 en 10.4.11 alors ...
J’utilise vpn4all. C'est un bon marché et facile à utiliser. Même ils essaient gratuitement http://www.vpn4all.com/fr/
Super tout, mais me suis je trompé dans l'AppleScript svp ?
on idle tell application "System Events" to tell current location of
network preferences set t_service to service "Ipredator" -- Ipredator
if not connected of current configuration of t_service then tell application "Transmission" to quit yes -- Ferme
Transmission en sauvegardant les paramètres
connect t_service
else tell application "System Events"
if not (exists process "Transmission") then tell application "Transmission"
open ""
set frontmost to false end tell
end if end tell
end if end tell
return 5 -- Vérification toutes les 5 secondes end idle
@korncrunkleduc
si c'est iPredator que tu utilises, il faut mettre le nom que tu as donné au réglage vpn dans Réseau.
Si c'est open"" qui ne marche pas, essaie de le changer en run.
N'oublie pas d'ajouter dans AppleScript la partie qui te permet de quitter le vpn en même temps que Transmission.
Je conseille de récupérer le courrier et les News sans le vpn.
super tuto !
merci à Francis et BG pour ces 2 bouts de scripts forts utiles !
y'aurait il un moyen d'automatiser l'ouverture du script lorsqu'on lance Transmission ?
Je ne lance pas Transmission, je lance l'Applescript d'abord.
Tu peux le faire démarrer à l'ouverture de ton compte dans Préférences Système>Comptes>Ouverture et le petit "+" en bas de la fenêtre et tu sélectionnes l'Applescript.
Pour ma part j'ai appelé ce fichier "Transmission VPN", de plus je lui ai adjoint une icône que tu trouveras
URLhttp://img705.imageshack.us/i/icnst...URL
et je l'ai mis dans le dock et j'ai déplacé, dans ce dock, l'icône de Transmission pour ne pas lancer Transmission au lieu de l'Applescript. ;-)
Bien vu. Merci encore pour ces astuces
Merci d'avoir publier toutes ces informations.
Cela permet à des gens incompétents d'accéder à ces avantages.
Thanks all ! It's working great.