Aller au contenu

Mac - Automatiser Le Montage D'un Volume De Mani


Palaz

Messages recommandés

Bonjour à tous,

Après avoir fait plusieurs recherches sur le net, je ne trouve toujours pas de réponse alors je poste ma question ici. Mon besoin est simple : je souhaite pouvoir monter certains volumes de mon NAS (entre autres "video", "music" et "photo") automatiquement au démarrage du mac un peu à la manière des lecteurs réseaux sous Windows. Je souhaite que ces volumes restent connectés et se reconnectent automatiquement en cas de coupure (quand par exemple, le mac n'est plus relié au réseau wifi).

Si je souhaite faire ça, c'est pour pouvoir utiliser ces volumes avec Plex et ne pas avoir à monter moi même les volumes du NAS manuellement via le Finder.

Et pour se faire, j'ai trouvé une astuce fort intéressante sur un forum anglophone, qui permet de monter un volume directement sur un point de montage défini par un dossier sur le disque dur local du mac. Elle est à mon sens, bien plus sympas que le montage automatique via un applescript (méthode que j'employais avant). En voici la procédure :

  • Dans le terminal, taper :


sudo nano /etc/fstab

  • Puis paramétrer le montage automatique en fonction du volume à monter, et de son point de montage :

NOM_DU_NAS:/video /Users/Mathieu/NAS url automounted,url==afp://Mathieu:MDP_COMPTE_NAS@NOM_DU_NAS._afpovertcp._tcp.local/video 0 0

  • Sauvegarder et fermer le fichier modifié et enfin initialiser le montage avec la commande dans le terminal :

sudo automount -vc

Ici, j'ai voulu monter le volume video sur un dossier appelé NAS, situé sur mon mac dans /Users/Mathieu

Source de l'astuce : http://forums.plexap...s-using-autofs/

Mais alors voici le problème :

screen-capture.png

J'ai un sérieux problème de permissions d'accès avec mon astuce. Pourtant, j'ai essayé plusieurs choses :

  • Utiliser le login admin et le mot de passe administrateur
  • Utiliser le login identique à celui de mon mac ("Mathieu") avec le même mot de passe que celui du mac (le compte "Mathieu" sur le NAS a les autorisations administrateur)

Rien n'y fait, j'ai le même problème de permissions. Pour info, quand je fais "Lire les informations" sur le lecteur video par exemple, j'obtiens :

screen-capture-1.png

Mais alors le plus bizarre reste pour la fin. Une fois, j'ai essayé de redémarrer le service de partage de fichier sous mac (protocole afp) via l'interface administrateur du NAS. Et ben là bingo, dès que je le redémarre, tous les volumes se montent correctement (sans le petit panneau "sens interdit"). Bon le hic c'est que dès que je redémarre le mac, le montage ne se refait pas correctement, il faut redémarrer à chaque fois le service afp. Pas très pratique...

En passant d'ailleurs, je ne comprends pas comment je peux avoir des volumes surlignés en bleu et pas d'autres, vu que l'option est verrouillé sous Mac OS. Si vous avez déjà rencontré ce genre de problème de permissions, je suis preneur !

Lien vers le commentaire
Partager sur d’autres sites

  • 3 semaines après...

Tu montes tes volumes sur le bureau et tu indiques le mdp et tu coches 'garder dans mon trousseau' puis

Dans le menu pomme /Préférence système / urtilisateur et groupe / onglet ouverture

Ton cadenas doit être déverrouillé,

Tu glisses tes volumes sur la petite fenetre ou tu fais un + pour les ajouter.

Si tu ne veux pas que les fenêtres de tes volumes s'ouvrent à chaque démarrage tu coches 'masquer'

Tu peux aussi glisser les volumes dans la barre favori de la fenêtre Finder, ce qui te permettra de l'ouvrir en cliquant dessus.

Laurent.

Lien vers le commentaire
Partager sur d’autres sites

  • 11 mois après...

Oui cela fonctionne mais au démarrage les dossiers s'ouvrent tous sur le bureau ... ca fait assez bordel comme impression !!! Toi tu me confirmes que quand tu demarre les dossiers montent sur le bureau sans s'ouvrir ? Desole d'insister MErci par avance

Tu vas dans préférences systèmes > Utilisateurs et Groupes > Ouverture et là, tu coches le volumes que tu montes pour qu'il soit masqué au démarrage de ton mac.

En principe ça devrait fonctionner puisque ça fonctionne pour les apps. Maintenant je n'en suis pas certain à 100% parce que je ne redémarre mon mac que rarement et souvent je ne suis pas devant à l'ouverture...

Lien vers le commentaire
Partager sur d’autres sites

Merci Koma pour ta réponse mais je te confirme que cela ne fonctionne pas les fenêtres te pètes a la gueule a chaque démarrage ... j'imagine qu'il va falloir trouver un script qui permette cela ... ca tombe bien j'ai que ça a faire .... j'avais acheté un NAS pour me faire gagner du temps et simplifier la vie ... et bien avec Synon c'est tout le contraire ... c'est complique et ça marche pas :-(

Lien vers le commentaire
Partager sur d’autres sites

Merci Koma pour ta réponse mais je te confirme que cela ne fonctionne pas les fenêtres te pètes a la gueule a chaque démarrage ... j'imagine qu'il va falloir trouver un script qui permette cela ... ca tombe bien j'ai que ça a faire .... j'avais acheté un NAS pour me faire gagner du temps et simplifier la vie ... et bien avec Synon c'est tout le contraire ... c'est complique et ça marche pas :-(

Arf dommage ! Il va falloir chercher un peu alors ^^

Le problème ici ne vient pas de ton nas mais de ton mac ;) Accéder au syno via l'interface web et le gérer est une chose mais le faire depuis le mac en webdav/smb ou afp en est une autre, ici si tu as activé le protocole afp sur ton nas il sera visible sur ton réseau local dans ton finder sans que tu ne fasses rien et sans que la fenêtre ne te saute à la gueule à l'ouverture...

Il faut voir si nos mac sont capables de monter un disque (syno ou non) en webdav ou smb au montage SANS que la fenêtre n'apparaisse mais là c'est valable pour tout mac qui veut monter un disque réseau

Modifié par Koma66
Lien vers le commentaire
Partager sur d’autres sites

  • 3 semaines après...

Salut à tous,

J'ai également un mac à la maison et je passe par le protocole afp pour les lecteurs réseau. Tout comme vous le système les monte tout seul au démarrage. Il suffit effectivement de glisser les lecteurs réseau dans l'onglet ouverture (paramètres système> utilisateurs et groupe> sélectionner l'utilisateur > onglet "ouverture").

Toutefois contrairement à vous je n'ai pas coché l'option "masquer" pour chacun des lecteurs : résultat les fenêtres du finder correspondantes aux lecteurs s'ouvrent quelques instants puis se ferment toutes seules. Cette "apparition" est vraiment très très rapide (2 à 3 secondes). Le principal pour moi au final est de ne pas à avoir à les fermer moi-même... :angry:

Avez vous essayer en décochant cette case "masquer" pour vos lecteurs réseau? :P

Il semble que cette case "masquer" ne fonctionne qu'avec les applications...

Cordialement

Miki

Modifié par mikijone
Lien vers le commentaire
Partager sur d’autres sites

  • 1 mois après...

Je suis passé par une autre astuce qui n'affiche pas les volumes ni les fenêtres : C'est un applescript qui exécute un script shell (via automator) :

mkdir /Volumes/public
mount_afp -i afp://login:mot_de_passe@IP_du_NAS/public /Volumes/Public
Il y a autant de lignes que de partages à monter. Je mets ce fichier en exécutable au lancement du mac.
Je cache toutes les icônes sur le bureau et accède aux partage par une icône dans la barre des menus extras en haut à droite.
Modifié par Atlantic.mac
Lien vers le commentaire
Partager sur d’autres sites

  • 1 mois après...

Salut,

J’ai également passé pas mal de temps à essayer de résoudre ce problème de montage automatique des volumes. La solution que j’ai adoptée passe également par le recours à un applescript.

J’avais une contrainte majeure supplémentaire : en plus de ne pas vouloir voir apparaître les volumes montés sur le bureau et les fenêtres afférentes, l’accès à mes volumes sur mon NAS nécessitait un couple login/mot de passe pour fonctionner (nous sommes plusieurs à partager le NAS sur mon réseau, et chacun accède à ses dossiers via son compte utilisateur et un mot de passe qui lui est propre). Le problème des lignes fournies par Atlantic.mac est que votre script contiendra, en clair, les mots de passe nécessaires pour effectuer le montage AFP. N’étant pas satisfait de cette solution (c’est pas très « propre » en terme de sécurité), j’ai trouvé une alternative par recours au trousseau d’accès. Il en résulte un script un peu plus « musclé », mais qui fonctionne de manière totalement transparente pour l’utilisateur tout en étant plus « safe ».

Au fur et à mesure que j’ai codé ce script, j’ai rajouté quelques « features » qui m’arrangeaient, au regard de ma configuration et de mes besoins.

Je vous donne l’intégralité du script en fin de post.

Afin d’éclairer ceux que ça intéresserait, voilà quelques éléments de compréhension supplémentaires :

- Mon NAS fait parti d’un réseau privé et a pour adresse IP 192.168.0.1

- Le script vérifie la présence du NAS sur le réseau avant de tenter de faire les montages AFP. Pour cela, il recherche la présence de cette adresse IP sur le réseau via un ping.

- Certains postes qui se connectent au NAS sont des portables. Le script étant exécuté à chaque démarrage de l’ordinateur, je ne voulais pas qu’il tente des commandes AFP sur une machine ayant une adresse IP égale à celle de NAS lorsque l’ordinateur portable est connecté à un réseau privé autre que le mien (ce qui est courant avec une adresse IP en 192.168). J’ai donc rajouté un test vérifiant que l’adresse MAC de la machine se trouvant derrière l’adresse 192.168.0.1 est bien celle de mon NAS (j’ai donc saisi « en dur » dans mon script l’adresse MAC du NAS

- Je peux me connecter à mon NAS via un VPN. Le script tente donc tout d’abord de se connecter au NAS via son adresse en 192.168, puis à l’adresse VPN du NAS (10.8.0.1)

- Les dossiers du NAS son tous montés dans le répertoire «~/DiskStation » de l’ordinateur sur lequel le script est exécuté

- Pour la gestion des mots de passe, il faut aller dans le trousseau d’accès, et créer à la main un nouveau mot de passe. Cette nouvelle entrée du trousseau doit impérativement s’appeler « NAS.automount.user », où user correspond au nom d’utilisateur de votre session (attention à bien respecter la casse). Si vous n’êtes pas sûr de ce nom, ouvrir un terminal et taper la commande « whoami ». Si vous avez plusieurs utilisateurs sur votre ordinateur, il faudra créer autant d’entrée dans le trousseau d’accès que d’utilisateurs. Par exemple, dans le cas de 2 utilisateurs ben et lili, il faudra une entrée NAS.automount.ben et une entrée NAS.automount.lili. Dans chacune de ses entrées, il faudra saisir le mot de passe de l’utilisateur concerné tel que déclaré sur le NAS. Remarque complémentaire : bien évidemment, cette méthode sous-entend que les comptes utilisateurs utilisés pour monter les dossiers du NAS aient le même nom que ceux sur votre ordinateur.

- Enfin, j’ai rajouté un affichage afin de savoir si le script s’exécutait bien. Pour cela, je me suis appuyé sur le notification center de MAC OSX (les messages du script apparaissent dedans). Pour que cela fonctionne, il faut installer l’utilitaire shell « terminal-notifier » dans le dossier Applications de votre mac (utilitaire gratuit trouvable facilement sur Internet). Remarque complémentaire : cette option d’affichage limite la compatibilité de cet applescript à MAC OS 10.7 ou ultérieur (puisque le notification center n’existait pas avant). Si vous enlevez les lignes d’affichage, le script devrait fonctionner sur MAC OS 10.6.

- Pour que le script soit exécuté à chaque ouverture de session, je l’ai enregistré en tant qu’exécutable et l’ai déclaré dans la liste d’ouverture, située dans les préférences système, utilisateurs et groupes.

Voilà, je pense qu’entre ces explications et les commentaires du code, les utilisateurs un peu aguerris devraient s’en sortir. Pour les plus néophytes, j’imagine que ça sera peut-être un peu plus rugueux ;-)

N’hésitez pas si vous avez des questions ou des remarques !

-- =============== DECLARATION DES VARIABLES ===============

-- Version et nom du script

set script_name to "NAS automount"

set script_version to "2.5"

-- Adresse IP par défaut du serveur

set default_server_on_lan to "192.168.0.1"

set default_server_on_vpn to "10.8.0.1"

-- Adresse MAC du serveur (Attention, si vous avez des 0 (chiffre zéro) dans votre adresse MAC, ne pas les mettre. Par exempe si vous adresse MAC est 01:11:22:33:00:60, il faudra mettre ici 1:11:22:33::6)

set server_mac_address to "11:22:33:44:55:66"

-- Racine de la clé à rechercher dans le trousseau d'accès

set keychain_key_root to "NAS.automount"

-- Delai d'attente pour la détection du serveur (en seconde)

set wait_for_server_delay to 1

-- Répertoire racine de montage pour l'ordinateur sur lequel est exécuté le script

set root_directory to "~/DiskStation"

-- Répertoire de terminal-notifier

set notifier_directory to "/Applications"

-- Volumes à monter et points de montage

-- item 1 : volume du NAS à monter (chemin absolu sur le NAS)

-- item 2 : chemin relatif du point de montage sur la machine sur lequel est exécuté le script (hors rootDirectory déclaré plus haut)

set volumes_to_mount to {{"/videos", "/videos"}, {"/photos", "/photos"}}

-- =============== CORPS DU SCRIPT ===============

-- Test de la presence du serveur sur le réseau

set server to is_server_present_fct(wait_for_server_delay, default_server_on_lan, default_server_on_vpn, server_mac_address)

if server is equal to "-1" then

-- Serveur absent du réseau => on arrête là le script

notifier_fct(notifier_directory, script_name & " " & script_version, "Serveur absent")

return

end if

-- Récupération du nom d'utilisateur

set user to do shell script "whoami"

-- Affichage d'informations avant la saisie du mot de passe

notifier_fct(notifier_directory, script_name & " " & script_version, "Serveur DiskStation trouvé sur " & server & " (Utilisateur : " & user & ")")

-- Récupération du mot de passe

set passwd to get_user_password_from_keychain_fct(script_name, script_version, user, keychain_key_root, root_directory)

if passwd is equal to "-1" then

return

end if

-- Boucle de montage de tous les volumes

repeat with this_volume in volumes_to_mount

set return_value to "-1"

repeat until return_value is equal to "0"

set return_value to mount_try_fct(this_volume, user, passwd, server, root_directory)

if return_value is equal to "-1" then

-- Le mot de passe est incorrect => on arrête là le script

notifier_fct(notifier_directory, script_name & " " & script_version, "Mot de passe incorrect")

return

else

notifier_fct(notifier_directory, script_name & " " & script_version, "Dossier " & item 1 of this_volume & " monté", script_name)

end if

end repeat

end repeat

-- =============== FONCTIONS ===============

-- Fonction d'envoi d'une notification

on notifier_fct(notifier_directory, notification_title, notification_description)

try

do shell script notifier_directory & "/terminal-notifier.app/Contents/MacOS/terminal-notifier -title "" & notification_title & "" -message "" & notification_description & """

end try

end notifier_fct

-- Fonction de recherche du serveur NAS sur le réseau (sur réseau local, puis, à défaut, sur VPN)

-- Valeurs de retour

-- Si serveur trouve : l'adresse IP du serveur

-- Si serveur non trouve : -1

on is_server_present_fct(wait_for_server_delay, server_on_lan, server_on_vpn, server_mac_address)

-- On commence par tester la présence du serveur sur LAN

try

do shell script "ping -o -t " & wait_for_server_delay & " " & server_on_lan

set server_is_present to do shell script "echo $?"

on error

set server_is_present to "1"

end try

if server_is_present is equal to "0" then

-- L'adresse IP du serveur a répondu => on test que c'est bien le serveur avec son adresse MAC

if check_server_mac_adress_fct(server_on_lan, server_mac_address) is equal to "1" then

-- Il s'agit bien du serveur, accessible via LAN

return server_on_lan

end if

end if

-- Si on arrive ici, on test la présence du serveur sur VPN

try

do shell script "ping -o -t " & wait_for_server_delay & " " & server_on_vpn

set server_is_present to do shell script "echo $?"

on error

set server_is_present to "1"

end try

if server_is_present is equal to "0" then

-- Le test de présence d'une adresse IP dans un VPN ne fonctionnant pas (ARP ne marche pas sur les interfaces VPN)

-- on consiède par défaut que l'adresse IP VPN est celle du serveur

return server_on_vpn

end if

-- Aucun serveur détecté => on quitte le script

return "-1"

end is_server_present_fct

-- Fonction permettant de vérifier l'identité du serveur à partir de son adresse MAC

-- Valeurs de retour

-- 0 : l'adresse MAC liée à l'adresse IP passée en argument n'est pas celle du serveur

-- 1 : l'adresse MAC liée à l'adresse IP passée en argument est celle du serveur

on check_server_mac_adress_fct(server_ip_address, server_mac_address)

-- On récupère l'adresse MAC du liée à l'adresse IP donnée en argument, et on la compare avec SED à celle du serveur NAS

set mac_address_comparison to do shell script "arp " & server_ip_address & " | sed -n '/" & server_mac_address & "/='"

if mac_address_comparison is equal to "1" then

return "1"

else

return "0"

end if

end check_server_mac_adress_fct

-- Fonction permettant la récupération du mot de passe depuis le trousseau d'accès

-- Valeurs de retour

-- Si erreur : -1

-- Si OK : le mot de passe

on get_user_password_from_keychain_fct(script_name, script_version, user, keychain_key_root, root_directory)

try

-- Commande qui ne fonctionne qu'à partir de MAC OS X 10.8 (et peut-être 10.7)

-- set user_password to do shell script "security find-generic-password -w -g -s " & keychain_key_root & "." & user

-- Commande qui fonctionne avec les versions 10.6, 10.7 et 10.8 de MAC OS X

set user_password to do shell script "security find-generic-password -g -s " & keychain_key_root & "." & user & " 2>&1 | sed -n '1p' | sed 's/password: "//g' | sed 's/"//g'"

return user_password

on error

notifier_fct(notifier_directory, script_name & " " & script_version, "Impossible de récupérer le mot de passe de " & user, script_name)

end try

return "-1"

end get_user_password_from_keychain_fct

-- Fonction de montage d'un volume

-- Valeurs de retour

-- 0 : tout s'est bien passé

-- -1 : ça s'est mal passé

on mount_try_fct(this_volume, user, passwd, server, root_directory)

try

-- Création du point de montage

set mount_point to item 2 of this_volume

do shell script "/bin/mkdir -p " & root_directory & mount_point

-- Deconnexion éventuelle de ce point de montage

try

do shell script "/sbin/umount " & root_directory & mount_point

end try

-- Récupération du volume à monter

set volume_to_mount to item 1 of this_volume

-- Création des arguments à passer à la commande shell mount_afp

set afp_args to "afp://" & user & ":" & passwd & "@" & server & volume_to_mount & " " & root_directory & mount_point

-- Montage du volume

try

do shell script "/sbin/mount_afp " & afp_args

return "0"

on error

-- Echec du montage

return "-1"

end try

end try

return "-1"

end mount_try_fct

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

Moi j'ai juste fait un AppleScript avec une seule ligne que je lance automatique au démarrage :

mount volume "afp://utilisateur:mot_de_passe@nom_ou_ip_du_Synology/dossier_partagé/"

Bien sûr, il faut remplacer les paramètre par rapport à la config et s'il y a plusieurs volumes à monter, ça fait plusieurs lignes... :-)

Lien vers le commentaire
Partager sur d’autres sites

  • 2 semaines après...

Hello,

Ca semble intéressant, mais ca ne marche pas pour des partages avec espace dans le nom du partage...

J'ai essayé de modifier le script avec des guillemets, mais rien n'y fait... ca marche pas...

Exemple, un partage qui s'appelle "/Documents toto"

Lien vers le commentaire
Partager sur d’autres sites

  • 2 mois après...

Salut,

J’ai également passé pas mal de temps à essayer de résoudre ce problème de montage automatique des volumes. La solution que j’ai adoptée passe également par le recours à un applescript.

J’avais une contrainte majeure supplémentaire : en plus de ne pas vouloir voir apparaître les volumes montés sur le bureau et les fenêtres afférentes, l’accès à mes volumes sur mon NAS nécessitait un couple login/mot de passe pour fonctionner (nous sommes plusieurs à partager le NAS sur mon réseau, et chacun accède à ses dossiers via son compte utilisateur et un mot de passe qui lui est propre). Le problème des lignes fournies par Atlantic.mac est que votre script contiendra, en clair, les mots de passe nécessaires pour effectuer le montage AFP. N’étant pas satisfait de cette solution (c’est pas très « propre » en terme de sécurité), j’ai trouvé une alternative par recours au trousseau d’accès. Il en résulte un script un peu plus « musclé », mais qui fonctionne de manière totalement transparente pour l’utilisateur tout en étant plus « safe ».

Au fur et à mesure que j’ai codé ce script, j’ai rajouté quelques « features » qui m’arrangeaient, au regard de ma configuration et de mes besoins.

Je vous donne l’intégralité du script en fin de post.

Afin d’éclairer ceux que ça intéresserait, voilà quelques éléments de compréhension supplémentaires :

- Mon NAS fait parti d’un réseau privé et a pour adresse IP 192.168.0.1

- Le script vérifie la présence du NAS sur le réseau avant de tenter de faire les montages AFP. Pour cela, il recherche la présence de cette adresse IP sur le réseau via un ping.

- Certains postes qui se connectent au NAS sont des portables. Le script étant exécuté à chaque démarrage de l’ordinateur, je ne voulais pas qu’il tente des commandes AFP sur une machine ayant une adresse IP égale à celle de NAS lorsque l’ordinateur portable est connecté à un réseau privé autre que le mien (ce qui est courant avec une adresse IP en 192.168). J’ai donc rajouté un test vérifiant que l’adresse MAC de la machine se trouvant derrière l’adresse 192.168.0.1 est bien celle de mon NAS (j’ai donc saisi « en dur » dans mon script l’adresse MAC du NAS

- Je peux me connecter à mon NAS via un VPN. Le script tente donc tout d’abord de se connecter au NAS via son adresse en 192.168, puis à l’adresse VPN du NAS (10.8.0.1)

- Les dossiers du NAS son tous montés dans le répertoire «~/DiskStation » de l’ordinateur sur lequel le script est exécuté

- Pour la gestion des mots de passe, il faut aller dans le trousseau d’accès, et créer à la main un nouveau mot de passe. Cette nouvelle entrée du trousseau doit impérativement s’appeler « NAS.automount.user », où user correspond au nom d’utilisateur de votre session (attention à bien respecter la casse). Si vous n’êtes pas sûr de ce nom, ouvrir un terminal et taper la commande « whoami ». Si vous avez plusieurs utilisateurs sur votre ordinateur, il faudra créer autant d’entrée dans le trousseau d’accès que d’utilisateurs. Par exemple, dans le cas de 2 utilisateurs ben et lili, il faudra une entrée NAS.automount.ben et une entrée NAS.automount.lili. Dans chacune de ses entrées, il faudra saisir le mot de passe de l’utilisateur concerné tel que déclaré sur le NAS. Remarque complémentaire : bien évidemment, cette méthode sous-entend que les comptes utilisateurs utilisés pour monter les dossiers du NAS aient le même nom que ceux sur votre ordinateur.

- Enfin, j’ai rajouté un affichage afin de savoir si le script s’exécutait bien. Pour cela, je me suis appuyé sur le notification center de MAC OSX (les messages du script apparaissent dedans). Pour que cela fonctionne, il faut installer l’utilitaire shell « terminal-notifier » dans le dossier Applications de votre mac (utilitaire gratuit trouvable facilement sur Internet). Remarque complémentaire : cette option d’affichage limite la compatibilité de cet applescript à MAC OS 10.7 ou ultérieur (puisque le notification center n’existait pas avant). Si vous enlevez les lignes d’affichage, le script devrait fonctionner sur MAC OS 10.6.

- Pour que le script soit exécuté à chaque ouverture de session, je l’ai enregistré en tant qu’exécutable et l’ai déclaré dans la liste d’ouverture, située dans les préférences système, utilisateurs et groupes.

Voilà, je pense qu’entre ces explications et les commentaires du code, les utilisateurs un peu aguerris devraient s’en sortir. Pour les plus néophytes, j’imagine que ça sera peut-être un peu plus rugueux ;-)

N’hésitez pas si vous avez des questions ou des remarques !

-- =============== DECLARATION DES VARIABLES ===============

-- Version et nom du script

set script_name to "NAS automount"

set script_version to "2.5"

-- Adresse IP par défaut du serveur

set default_server_on_lan to "192.168.0.1"

set default_server_on_vpn to "10.8.0.1"

-- Adresse MAC du serveur (Attention, si vous avez des 0 (chiffre zéro) dans votre adresse MAC, ne pas les mettre. Par exempe si vous adresse MAC est 01:11:22:33:00:60, il faudra mettre ici 1:11:22:33::6)

set server_mac_address to "11:22:33:44:55:66"

-- Racine de la clé à rechercher dans le trousseau d'accès

set keychain_key_root to "NAS.automount"

-- Delai d'attente pour la détection du serveur (en seconde)

set wait_for_server_delay to 1

-- Répertoire racine de montage pour l'ordinateur sur lequel est exécuté le script

set root_directory to "~/DiskStation"

-- Répertoire de terminal-notifier

set notifier_directory to "/Applications"

-- Volumes à monter et points de montage

-- item 1 : volume du NAS à monter (chemin absolu sur le NAS)

-- item 2 : chemin relatif du point de montage sur la machine sur lequel est exécuté le script (hors rootDirectory déclaré plus haut)

set volumes_to_mount to {{"/videos", "/videos"}, {"/photos", "/photos"}}

-- =============== CORPS DU SCRIPT ===============

-- Test de la presence du serveur sur le réseau

set server to is_server_present_fct(wait_for_server_delay, default_server_on_lan, default_server_on_vpn, server_mac_address)

if server is equal to "-1" then

-- Serveur absent du réseau => on arrête là le script

notifier_fct(notifier_directory, script_name & " " & script_version, "Serveur absent")

return

end if

-- Récupération du nom d'utilisateur

set user to do shell script "whoami"

-- Affichage d'informations avant la saisie du mot de passe

notifier_fct(notifier_directory, script_name & " " & script_version, "Serveur DiskStation trouvé sur " & server & " (Utilisateur : " & user & ")")

-- Récupération du mot de passe

set passwd to get_user_password_from_keychain_fct(script_name, script_version, user, keychain_key_root, root_directory)

if passwd is equal to "-1" then

return

end if

-- Boucle de montage de tous les volumes

repeat with this_volume in volumes_to_mount

set return_value to "-1"

repeat until return_value is equal to "0"

set return_value to mount_try_fct(this_volume, user, passwd, server, root_directory)

if return_value is equal to "-1" then

-- Le mot de passe est incorrect => on arrête là le script

notifier_fct(notifier_directory, script_name & " " & script_version, "Mot de passe incorrect")

return

else

notifier_fct(notifier_directory, script_name & " " & script_version, "Dossier " & item 1 of this_volume & " monté", script_name)

end if

end repeat

end repeat

-- =============== FONCTIONS ===============

-- Fonction d'envoi d'une notification

on notifier_fct(notifier_directory, notification_title, notification_description)

try

do shell script notifier_directory & "/terminal-notifier.app/Contents/MacOS/terminal-notifier -title "" & notification_title & "" -message "" & notification_description & """

end try

end notifier_fct

-- Fonction de recherche du serveur NAS sur le réseau (sur réseau local, puis, à défaut, sur VPN)

-- Valeurs de retour

-- Si serveur trouve : l'adresse IP du serveur

-- Si serveur non trouve : -1

on is_server_present_fct(wait_for_server_delay, server_on_lan, server_on_vpn, server_mac_address)

-- On commence par tester la présence du serveur sur LAN

try

do shell script "ping -o -t " & wait_for_server_delay & " " & server_on_lan

set server_is_present to do shell script "echo $?"

on error

set server_is_present to "1"

end try

if server_is_present is equal to "0" then

-- L'adresse IP du serveur a répondu => on test que c'est bien le serveur avec son adresse MAC

if check_server_mac_adress_fct(server_on_lan, server_mac_address) is equal to "1" then

-- Il s'agit bien du serveur, accessible via LAN

return server_on_lan

end if

end if

-- Si on arrive ici, on test la présence du serveur sur VPN

try

do shell script "ping -o -t " & wait_for_server_delay & " " & server_on_vpn

set server_is_present to do shell script "echo $?"

on error

set server_is_present to "1"

end try

if server_is_present is equal to "0" then

-- Le test de présence d'une adresse IP dans un VPN ne fonctionnant pas (ARP ne marche pas sur les interfaces VPN)

-- on consiède par défaut que l'adresse IP VPN est celle du serveur

return server_on_vpn

end if

-- Aucun serveur détecté => on quitte le script

return "-1"

end is_server_present_fct

-- Fonction permettant de vérifier l'identité du serveur à partir de son adresse MAC

-- Valeurs de retour

-- 0 : l'adresse MAC liée à l'adresse IP passée en argument n'est pas celle du serveur

-- 1 : l'adresse MAC liée à l'adresse IP passée en argument est celle du serveur

on check_server_mac_adress_fct(server_ip_address, server_mac_address)

-- On récupère l'adresse MAC du liée à l'adresse IP donnée en argument, et on la compare avec SED à celle du serveur NAS

set mac_address_comparison to do shell script "arp " & server_ip_address & " | sed -n '/" & server_mac_address & "/='"

if mac_address_comparison is equal to "1" then

return "1"

else

return "0"

end if

end check_server_mac_adress_fct

-- Fonction permettant la récupération du mot de passe depuis le trousseau d'accès

-- Valeurs de retour

-- Si erreur : -1

-- Si OK : le mot de passe

on get_user_password_from_keychain_fct(script_name, script_version, user, keychain_key_root, root_directory)

try

-- Commande qui ne fonctionne qu'à partir de MAC OS X 10.8 (et peut-être 10.7)

-- set user_password to do shell script "security find-generic-password -w -g -s " & keychain_key_root & "." & user

-- Commande qui fonctionne avec les versions 10.6, 10.7 et 10.8 de MAC OS X

set user_password to do shell script "security find-generic-password -g -s " & keychain_key_root & "." & user & " 2>&1 | sed -n '1p' | sed 's/password: "//g' | sed 's/"//g'"

return user_password

on error

notifier_fct(notifier_directory, script_name & " " & script_version, "Impossible de récupérer le mot de passe de " & user, script_name)

end try

return "-1"

end get_user_password_from_keychain_fct

-- Fonction de montage d'un volume

-- Valeurs de retour

-- 0 : tout s'est bien passé

-- -1 : ça s'est mal passé

on mount_try_fct(this_volume, user, passwd, server, root_directory)

try

-- Création du point de montage

set mount_point to item 2 of this_volume

do shell script "/bin/mkdir -p " & root_directory & mount_point

-- Deconnexion éventuelle de ce point de montage

try

do shell script "/sbin/umount " & root_directory & mount_point

end try

-- Récupération du volume à monter

set volume_to_mount to item 1 of this_volume

-- Création des arguments à passer à la commande shell mount_afp

set afp_args to "afp://" & user & ":" & passwd & "@" & server & volume_to_mount & " " & root_directory & mount_point

-- Montage du volume

try

do shell script "/sbin/mount_afp " & afp_args

return "0"

on error

-- Echec du montage

return "-1"

end try

end try

return "-1"

end mount_try_fct

bonjour,

ce script est super genial.

sauf erreur de ma part, tu par du principe que le compte MAC et le Compte NAS sont identique.

donc je voudrais savoir si on peux lire le compte qui est contenu dans la clef du trousseau.

parce que si je comprend bien, dans cette commande "set afp_args to "afp://" & user & ":" & passwd & "@" & server & volume_to_mount & " " & root_directory & mount_point"

le user est issu de la commande whoami par cette ligne la : set user to do shell script "whoami" et non du trousseau.

connaisse tu la commande pour récupère cette info ???

merci d'avance

Via

Lien vers le commentaire
Partager sur d’autres sites

Hello,

Ca semble intéressant, mais ca ne marche pas pour des partages avec espace dans le nom du partage...

J'ai essayé de modifier le script avec des guillemets, mais rien n'y fait... ca marche pas...

Exemple, un partage qui s'appelle "/Documents toto"

Il suffit juste de mettre un devant chaque caractère espace dans le nom de ton partage

Lien vers le commentaire
Partager sur d’autres sites

@via78 : bon finalement, j'avais encore 5mn.

Commande depuis le terminal (testé) avec une clé du nom de NAS.automount.ben :

security find-generic-password -g -s NAS.automount.ben 2>&1 | sed -n '7p'| sed 's/"acct"<blob>="//g' | sed 's/"//g' | sed -e "s/^ *//g"

Commande pour le script (non testée) :

set user to do shell script "security find-generic-password -g -s " & keychain_key_root & " 2>&1 | sed -n '7p'| sed 's/"acct"<blob>="//g' | sed 's/"//g' | sed -e 's/^ *//g'"

Remarque : par contre dans ce cas, la variable keychain_key_root doit contenir NAS.automount.ben, ce qui n'est pas le cas dans l'implémentation actuelle du script (elle contient seulement pour le moment NAS.automount)

En espérant que cela puisse te servir.

Lien vers le commentaire
Partager sur d’autres sites

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.