via78 Posté(e) le 31 juillet 2013 Posté(e) le 31 juillet 2013 yes ca fonctionne si tu veux je modifie le script pour qu'il soit cohérent entre NAS.automount.ben et keychain_key_root , et je le poste ici pour que tu le valide. Via un grand merci en tous cas. 0 Citer
gargaben Posté(e) le 31 juillet 2013 Posté(e) le 31 juillet 2013 OK cool. Je viens de comprendre ce que tu voulais faire! C'est clair que c'est pas mal du tout : ça permet d'avoir des comptes sur le NAS différents de ceux des ordinateurs, ce qui peut être vraiment pratique (pas utile dans mon cas, mais quand même bien pratique et plus "générique"!). En plus, pour déployer le script, c'est plus simple : il suffit de créer une clé dans le trousseau pour chaque utilisateur, et cette clé peut avoir le même nom (plus de besoin de cette histoire de NAS.automount.<nom d'utilisateur>). Ecoute, je veux bien ta version mise à jour du script. Je la teste chez moi et si c'est OK, je la met en dispo dans la section téléchargement du forum (ce sera la version 2.6 donc). En tout cas cool de voir que ce script peut servir à d'autres. A+ 0 Citer
via78 Posté(e) le 31 juillet 2013 Posté(e) le 31 juillet 2013 voila une nouvelle version: -- =============== DECLARATION DES VARIABLES =============== -- Version et nom du script set script_name to "NAS automount" set script_version to "2.6" -- 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 get_user_from_keychain_fct(script_name, script_version, keychain_key_root, root_directory) if user is equal to "-1" then return end if -- 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_password_from_keychain_fct(script_name, script_version, keychain_key_root, root_directory) if passwd is equal to "-1" then return end if -- 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 & ") (mot de passe : " & passwd & ")") -- 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 le login depuis le trousseau d'accès -- Valeurs de retour -- Si erreur : -1 -- Si OK : le login on get_user_from_keychain_fct(script_name, script_version, 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 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'" 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'" return user on error notifier_fct(notifier_directory, script_name & " " & script_version, "Impossible de récupérer le login", script_name) end try return "-1" end get_user_from_keychain_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_password_from_keychain_fct(script_name, script_version, keychain_key_root, root_directory) try -- Commande qui ne fonctionne qu'à partir de MAC OS X 10.8 (et peut-être 10.7) -- set passwd to do shell script "security find-generic-password -w -g -s " & keychain_key_root -- Commande qui fonctionne avec les versions 10.6, 10.7 et 10.8 de MAC OS X set passwd to do shell script "security find-generic-password -g -s " & keychain_key_root & " 2>&1 | sed -n '1p' | sed 's/password: "//g' | sed 's/"//g'" return passwd on error notifier_fct(notifier_directory, script_name & " " & script_version, "Impossible de récupérer le mot de passe de ", script_name) end try return "-1" end get_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 par contre j'ai juste une dernière question : quel est la différence entre monter les lecteurs avec ou sans point de montage comme ceci : afp://compte:passwd@Nas/music/ ? voila j'ai peux être fais une coquille via PS : pour ceux qui veulent tester : j'ai du autoriser l'accès a cette clef du trousseau a toutes les applications et sur le nas, faut autoriser le protocole ICMP !!! 0 Citer
gargaben Posté(e) le 31 juillet 2013 Posté(e) le 31 juillet 2013 (modifié) Re, OK j'ai testé ton script et ça marche nickel. Je vais également basculer chez moi avec cette nouvelle version. Quelques remarques/réponses : - j'ai "cleané" un peu le code à partir de ta version (genre des vieux trucs que je devais faire depuis longtemps) - j'ai cleané également un peu ton code (genre ne pas afficher le mot de passe récupéré dans le trousseau dans les messages de notification ) - pour l'autorisation à cette clé du trousseau, pas la peine de donner les droits à toutes les applis : au premier lancement du script, OS X te demande si tu veux donner un accès permanent à cette clé au script. Si tu cliques sur OK, ça sera bon et limité au seul script (en réalité à l'utilitaire "security" si tu regardes les propriétés de la clé une fois l'autorisation permanente donnée) - Pour ta question sur mount_afp, si tu ne donnes pas de point de montage, mount_afp te renverra une erreur car il ne saura pas où monter ton dossier réseau sur ton ordinateur local. Ais-je bien répondu ou suis-je à côté de la plaque (i.e. je n'ai peut-être pas bien compris ta question)? Bon, je mets cette nouvelle version sur la page des téléchargements du forum dans la foulée de cette réponse => Encore merci à toi pour cette proposition d'évolution. A+ Modifié le 31 juillet 2013 par gargaben 0 Citer
via78 Posté(e) le 1 août 2013 Posté(e) le 1 août 2013 Re, OK j'ai testé ton script et ça marche nickel. Je vais également basculer chez moi avec cette nouvelle version. Quelques remarques/réponses : - j'ai "cleané" un peu le code à partir de ta version (genre des vieux trucs que je devais faire depuis longtemps) - j'ai cleané également un peu ton code (genre ne pas afficher le mot de passe récupéré dans le trousseau dans les messages de notification ) - pour l'autorisation à cette clé du trousseau, pas la peine de donner les droits à toutes les applis : au premier lancement du script, OS X te demande si tu veux donner un accès permanent à cette clé au script. Si tu cliques sur OK, ça sera bon et limité au seul script (en réalité à l'utilitaire "security" si tu regardes les propriétés de la clé une fois l'autorisation permanente donnée) - Pour ta question sur mount_afp, si tu ne donnes pas de point de montage, mount_afp te renverra une erreur car il ne saura pas où monter ton dossier réseau sur ton ordinateur local. Ais-je bien répondu ou suis-je à côté de la plaque (i.e. je n'ai peut-être pas bien compris ta question)? Bon, je mets cette nouvelle version sur la page des téléchargements du forum dans la foulée de cette réponse => Encore merci à toi pour cette proposition d'évolution. A+ -on est d'accord sur l'affichage du mot de passe, c'était a des fin de débugue (pour ma part, je garderais qu'une notification de monter des lecteurs, le reste, je le garderais commenter pour le jours ou j'ai un problème, mais ca n'engage que moi ) -en ce qui concerne la sécurité du trousseau, j'ai bien ce que tu explique sur ma virtuelle machine qui me sert a faire des tests mais sur mon MacBook pro ca ne fonctionne pas de la même façon. peux être parce qu'il n'était pas enregistrer, je vais pousser un peu plus loin mes recherche maintenant que le script est stabiliser. - oui tu as bien répondu a ma question super, je vais de ce pas regarde le ménage que tu a fais dans le script et l'adapter a mon réseau. Génial et encore un grand merci pour tous le taf. Via 0 Citer
Thatsme Posté(e) le 12 mars 2014 Posté(e) le 12 mars 2014 Et sinon la création d'alias sur le bureau fonctionne aussi bien. 0 Citer
bennybouf Posté(e) le 14 mai 2014 Posté(e) le 14 mai 2014 Bonsoir, Alors, pour commencer, je suis un gros noob mais ce script est exactement ce que je recherche donc je me penche dessus. Evidement, je n'arrive pas à le faire fonctionner et je tourne en rond avec mes divers essais. Dans un premier temps, je me suis aperçu que le mot de passe ne devait pas contenir certains caractères spéciaux (">" par exemple). Une fois ce problème isolé, j'ai créé un autre user sur mon NAS pour test. Là où je bloque sévère, c'est à cet endroit : -- 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 {{"/video", "/video"}, {"/video", "/tmp"}} Je ne comprends pas les points de montages. Mon dossier est bien à la racine de mon NAS mais je ne comprends pas comment orienter ça en tenant compte de ça : -- Répertoire racine de montage pour l'ordinateur sur lequel est exécuté le script set root_directory to "~/Desktop" Lorsque je lance le script dans l'éditeur AppleScript, voici le détail des événements : tell current application do shell script "ping -o -t 1 192.168.1.10" --> "PING 192.168.1.10 (192.168.1.10): 56 data bytesr64 bytes from 192.168.1.10: icmp_seq=0 ttl=64 time=0.336 msrr--- 192.168.1.10 ping statistics ---r1 packets transmitted, 1 packets received, 0.0% packet lossrround-trip min/avg/max/stddev = 0.336/0.336/0.336/0.000 ms" do shell script "echo $?" --> "0" do shell script "arp 192.168.1.10 | sed -n '/11:22:33:44:55:66/='" --> "1" do shell script "security find-generic-password -g -s NAS.automount 2>&1 | sed -n '7p'| sed 's/"acct"<blob>="//g' | sed 's/"//g' | sed -e 's/^ *//g'" --> "Bennybouf" do shell script "/Applications/terminal-notifier.app/Contents/MacOS/terminal-notifier -title "NAS automount 2.6" -message "Serveur DiskStation trouvé sur 192.168.1.10 (Utilisateur : Bennybouf)"" --> "* Notification delivered." do shell script "security find-generic-password -g -s NAS.automount 2>&1 | sed -n '1p' | sed 's/password: "//g' | sed 's/"//g'" --> "motdepassedur" do shell script "/Applications/terminal-notifier.app/Contents/MacOS/terminal-notifier -title "NAS automount 2.6" -message "Serveur DiskStation trouvé sur 192.168.1.10 (Utilisateur : Bennybouf)"" --> "* Notification delivered." do shell script "/bin/mkdir -p ~/Desktop/video" --> "" do shell script "/sbin/umount ~/Desktop/video" --> error "umount: /Users/Bennybouf/Desktop/video: not currently mounted" number 1 do shell script "/sbin/mount_afp afp://Bennybouf:motdepassedur@192.168.1.10/video ~/Desktop/video" --> error "mount_afp: AFPMountURL returned error 1, errno is 3" number 1 do shell script "/Applications/terminal-notifier.app/Contents/MacOS/terminal-notifier -title "NAS automount 2.6" -message "Mot de passe incorrect"" --> "* Notification delivered." end tell Je suis sous Mac OS 10.9.2 / Terminal Notifier 1.4.2 / DSM 4.2-3248. Je teste le script directement depuis l'éditeur (fichier dans dossier "Téléchargements"). SI vous pouviez m'aider, je vous en serai méga reconnaissant ! Merci beaucoup ;-) 0 Citer
Fravadona Posté(e) le 14 mai 2014 Posté(e) le 14 mai 2014 Heu, pourquoi ne pas utiliser NFS avec Autofs plutot que SMB ou AFP ? 0 Citer
ccciolll Posté(e) le 4 décembre 2014 Posté(e) le 4 décembre 2014 (modifié) À tester, car j'ai ce problème avec mon NAS en afp à domicile mais pas avec le serveur de fichiers, en afp aussi, au boulot (au boulot, pas de fenêtre surgissante au démarrage). Du coup j'ai réfléchi, quelle différence entre ici et au boulot. Au boulot je n'ai pas coché la case masquer (qui effectivement concerne les applis), donc ça ne viendrait pas de là. Par contre, au boulot, dans les prefs du finder, je n'affiche pas les serveurs connectés. J'ai testé ça et là je n'ai eu qu'une seule fenêtre qui s'est ouverte (photos) quand j'ai remonté le NAS. C'est peut-être là la solution. à essayer et confirmer. Modifié le 4 décembre 2014 par ccciolll 0 Citer
DaffY Posté(e) le 5 décembre 2014 Posté(e) le 5 décembre 2014 Heu sinon y a une appli qui fait ça très bien... Mountain dispo sur mas 0 Citer
sumers59 Posté(e) le 2 janvier 2017 Posté(e) le 2 janvier 2017 Bonjour à tous, Je déterre ce vieux sujet, et ce qui me surprend c'est qu'il ne soit pas plus repris tellement il est utile ! J'ai un soucis, il semble que mon script n'arrive pas à accéder à ma clé dans le trousseau. Voici mon message d'erreur : tell current application do shell script "ping -o -t 1 192.168.0.49" do shell script "echo $?" do shell script "arp 192.168.0.49 | sed -n '/:11:32:53:2b:b6/='" do shell script "security find-generic-password -g -s NAS.automount 2>&1 | sed -n '7p'| sed 's/\"acct\"<blob>=\"//g' | sed 's/\"//g' | sed -e 's/^ *//g'" do shell script "/Applications/terminal-notifier.app/Contents/MacOS/terminal-notifier -title \"NAS automount 2.6\" -message \"Serveur DiskStation trouvé sur 192.168.0.49 (Utilisateur : )\"" do shell script "security find-generic-password -g -s NAS.automount 2>&1 | sed -n '1p' | sed 's/password: \"//g' | sed 's/\"//g'" do shell script "/Applications/terminal-notifier.app/Contents/MacOS/terminal-notifier -title \"NAS automount 2.6\" -message \"Serveur DiskStation trouvé sur 192.168.0.49 (Utilisateur : )\"" do shell script "/bin/mkdir -p /Volumes/videos" do shell script "/Applications/terminal-notifier.app/Contents/MacOS/terminal-notifier -title \"NAS automount 2.6\" -message \"Mot de passe incorrect\"" end tell Il faut bien que la clé dans le trousseau s'appelle "NAS.automount" ou "NAS.automount.(nomd'utitilisateur)"? Idem dans le script? Merci ! 0 Citer
jmkuntz Posté(e) le 7 décembre 2017 Posté(e) le 7 décembre 2017 Le 31/07/2013 à 22:30, gargaben a dit : Re, OK j'ai testé ton script et ça marche nickel. Je vais également basculer chez moi avec cette nouvelle version. Quelques remarques/réponses : - j'ai "cleané" un peu le code à partir de ta version (genre des vieux trucs que je devais faire depuis longtemps) - j'ai cleané également un peu ton code (genre ne pas afficher le mot de passe récupéré dans le trousseau dans les messages de notification ) - pour l'autorisation à cette clé du trousseau, pas la peine de donner les droits à toutes les applis : au premier lancement du script, OS X te demande si tu veux donner un accès permanent à cette clé au script. Si tu cliques sur OK, ça sera bon et limité au seul script (en réalité à l'utilitaire "security" si tu regardes les propriétés de la clé une fois l'autorisation permanente donnée) - Pour ta question sur mount_afp, si tu ne donnes pas de point de montage, mount_afp te renverra une erreur car il ne saura pas où monter ton dossier réseau sur ton ordinateur local. Ais-je bien répondu ou suis-je à côté de la plaque (i.e. je n'ai peut-être pas bien compris ta question)? Bon, je mets cette nouvelle version sur la page des téléchargements du forum dans la foulée de cette réponse => Encore merci à toi pour cette proposition d'évolution. A+ Bonjour, Merci pour le script, je vais adapter et tester chez moi. 0 Citer
Atlantic.mac Posté(e) le 31 décembre 2017 Posté(e) le 31 décembre 2017 (modifié) J'ai eu ce même problème sous sierra et high sierra et j"ai trouvé une autre solution : un script .sh (dans Library/LaunchDaemons) qui contient des liens symboliques ln.... vers des dossiers situés dans le compte qui se connecte au lancement du mac. ex : #!/bin/bash ln -s /Users/moncompte/Library/Application\ Support/Synology/Archives /Volumes/Archives et un autre script dans ~moncompte/library/launchagents qui effectue les montages : ex: #!/bin/bash mount_AFP afp://compte:motdepasse@ipdusyno/dossiers/ /Users/moncompte/Library/Application\ Support/Synology/Archives De cette façon, les anciens liens conservés sous la forme /Volumes/dossierssurlesyno sont "reconduits/liés" vers un autre endroit... et ça marche bien.. Modifié le 31 décembre 2017 par Atlantic.mac 0 Citer
Messages recommandés
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.