This site uses cookies! Learn More

Ce site utilise des cookies !

En continuant à utiliser ce site, vous vous engagez à nous permettre de stocker des cookies sur votre ordinateur.

 

Si nous utilisons des cookies et retenons des données anonymes, c’est pour nous aider à mieux gérer notre mesure d’audience, aider nos partenaires commerciaux à nous rémunérer et nos partenaires publicitaires à proposer des annonces qui vous correspondent.

 

Grâce à ces cookies, le forum est en mesure de savoir qui écrit un message et utile pour le système d'authentification.

 

En cliquant sur « J'accepte », vous acceptez l'utilisation par NAS-Forum de cookies publicitaires et de mesure d'audience fine.

gargaben

Membres
  • Compteur de contenus

    20
  • Inscription

  • Dernière visite

Tout ce qui a été posté par gargaben

  1. Salut, tu pourrais mettre en ligne le contenu du script permettant d'envoyer un mail en ligne de commande? Jusqu'à il y a peu, j'utilisais "nail" via ipkg, mais ça ne marche plus depuis les récentes mises à jour de DSM. Je suis preneur de la syntaxe permettant de faire cela avec des commandes natives de DSM. Merci d'avance
  2. Version 1.1

    29 téléchargements

    Salut, j'utilise sur mon NAS l'appli PHOTOSTATION qui est bien pratique pour partager des photos avec des amis via Internet, et ce sans avoir à mettre ces dernières sur des sites tiers. Seul "bémol" trouvé : lors de l'ajout de nouvelles photos, il faut que j'avertisse manuellement chacune des personnes ayant les droits d'accès sur les albums concernés pour qu'elles pensent à venir jeter un coup d'oeil. SYNOLOGY n'ayant pas décidé de palier ce manque, j'ai donc pris mon courage à deux mains pour faire un script qui remplisse cette fonction. Le script ici rendu accessible permet donc de notifier automatiquement par mail les utilisateurs de PHOTOSTATION de l'ajout de nouvelles photos dans les albums auxquels ils ont accès. Aucun fichier de configuration à remplir, le script s'occupe de récupérer automatiquement sur le NAS toutes les informations dont il a besoin pour fonctionner (adresses mails, droits d'accès, etc.). J'ai fait ci-dessous un copier/coller des commentaires du début du script qui expliquent comment l'installer, quelles sont les restrictions/limites et comment tout cela fonctionne. ================== INSTALLATION ET CONFIGURATION ==================== Pour que ce script fonctionne, il faut que les conditions suivantes soient toutes respectées : 1) Le script (qui est en realite composé de deux fichiers : dsphoto_watchdog.sh et mail.php) doit être de préférence installé dans un repertoire dédié 2) Modifier les variables globales en début de script dans la section prévue a cet effet 3) L'envoi de notifications par mail du NAS SYNOLOGY doit être activé et configuré (cela se fait dans DSM sous Panneau de configuration/Notification/Général/Courrier électronique. 4) Le script doit être lancé en tant que root 5) PHOTOSTATION doit être configuré pour fonctionner avec les comptes utilisateurs du DSM (donc pas avec des comptes propres a PHOTOSTATION) 6) Les comptes utilisateurs DSM doivent avoir une adresse mail déclarée (cela se fait dans DSM sous Panneau de configuration/Utilisateur/<un utilisateur>/Courrier électronique) 7) Une fois toutes ces conditions validées, il faut lancer une fois le script pour qu'il "se configure" (voir le paragraphe ci-dessous expliquant le fonctionnement du script pour comprendre pourquoi) Une fois tout cela fait, vous pouvez lancer le script manuellement à chaque fois que vous le désirez. Cependant, un meilleur usage de celui-ci est de programmer son lancement a des intervalles réguliers (par exemple une fois par jour). Pour ce faire, il suffit d'utiliser le planificateur de tâches du DSM (cela se fait sous Panneau de configuraton/Planificateur de tâches).Une fois dans le planificateur, il faut créer une nouvelle tâche que l'on fera pointer sur le script. Remarque importante : configurer cette tâche pour qu'elle soit exécutée avec l'utilisateur root (cela se fait dans le planificateur de tâches, sous Paramètres généraux/Utilisateur). 9) Dernier conseil : le script donne des informations sur la sortie standard tout au long de son exécution (à des fins de DEBUG notamment). Si vous utilisez le planificateur de tâches, je ne saurais que trop vous conseiller de rediriger la sortie standard du script vers les logs systèmes. Pour ce faire, mettre à la fin de votre ligne de commande (dans le planificateur de tâches) les commandes additionnelles suivantes (hors crochets évidemment) [>> /var/log/messages 2>&1] ===================== REMARQUES IMPORTANTES =========================== 1) Comme indiqué ci-dessus, le script est prévu pour fonctionner uniquement si PHOTOSTATION utilise les comptes utilisateurs de DSM. Si PHOTOSTATION utilise des comptes propres a lui, le script ne fonctionnera pas 2) Le script fonctionne si vous avez des noms de dossiers ou des noms de photos avec des espaces 3) Si vos noms de dossiers ou de photos comportent des accents ou autres caractères "improbables" (par exemple des apostrophes), le script aura au mieux un comportement instable, au pire il ne fonctionnera pas (a éviter donc!) 4) Le script n'a pas été testé avec le service "Photo Station Personnel". Il est donc possible qu'il ne fonctionne pas ou ait un comportement instable si vous utilisez cette option 5) Le script ne surveille pas les photos directement enregistrées dans le répertoire racine de vos photos (typiquemet /volume1/photo). Il faut impérativement que vous photos soient dans des répertoires contenus dans le repertoire racine des photos. 6) Le script, dés son premier lancement, va créer un fichier s'appelle dsphoto_watchdog.log. Il est impératif de ne surtout pas tenter de le modifier ou de le supprimer. Faute de quoi, le script ne fonctionnera pas ou n'aura pas le fonctionnement voulu (voir le paragraphe ci-dessous expliquant le fonctionnement du script pour comprendre pourquoi) ===================== FONCTIONNEMENT DU SCRIPT =========================== Le script va comparer la date de chacune des photos contenues dans les albums de votre dossier photo avec la date de sa dernière exécution. Si la date des photos est plus récente que celle de la dernière exécution, un mail est envoyé aux utilisateurs qui ont les droits d'accès à l'album concerné. Le mail contiendra les informations suivantes : - le nom des albums contenant des nouvelles photos - le nombre de photos ajoutées dans chacun de ces albums - un rappel du l'URL permettant d'accéder a votre PHOTOSTATION (optionnel) - votre signature (optionnel) Une fois le script installé, il faut le lancer une premiere fois de façon à ce qu'il retienne une première date d'exécution. Celle-ci sera sauvegardée dans un fichier nommé "dsphoto_watchdog.log". A chaque exécution suivante, le script prendra comme date de référence celle contenue dans ce fichier "dsphoto_watchdog.log". Une fois la recherche de nouvelles photos terminée, le script s'achèvera par la mise a jour de ce fichier "dsphoto_watchdog.log" en remplaçant la date contenue par celle de cette nouvelle exécution du script.
  3. 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+
  4. 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+
  5. @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.
  6. @via78 : hum, oui je pense que ça doit être faisable, et en plus ça serait au final plus "propre" qu'un whoami (même si le résultat au final serait le même). Je regarde et essaye de te répondre d'ici demain. Ps : pour la réactivité, coup de chance
  7. Il suffit juste de mettre un devant chaque caractère espace dans le nom de ton partage
  8. Salut, juste pour être sur d'avoir bien compris ta question : tu voudrais récupérer le user depuis quelle clef du trousseau? Celle que tu as créé pour l'exécution du script ou tu parles d'une autre clef?
  9. gargaben

    O

    C'est bon, la boucle est bouclée. Ce que je cherchais, c'était de pouvoir savoir quel utilisateur avait quels droits dans PhotoStation, et de récupérer les adresses mail de ces utilisateurs pour leur envoyer un mail dans le cadre de mon script. Au cas ou cela intéresserait quelqu'un : - On récupère les droits d'accès via la table photo_access_right_for_dsm_account de la base photo du serveur PostgreSQL Synology ; - A chaque droit est associé un userid. La correspondance userid/nom du compte est donnée par le fichier /etc/passwd ; - La récupération de l'adresse mail est possible via le fichier /etc/synouser.conf, qui contient à la fois le nom du compte et l'adresse mail qui lui est associée. Merci à toi bud77! Ton aide m'a été précieuse. Il ne me reste plus qu'à implémenter tout cela dans mon script....
  10. gargaben

    O

    Non, j'avais déjà vu cette table mais c'est pas bon. Les userid donnés par la table photo_access_right_for_dsm_account sont ceux des comptes du DSM. Les données contenues dans la table photo_user concernent les éventuels comptent créés pour PhotoStation uniquement (il ne s'agit pas des comptes du DSM). Les userid des comptes du DSM et ceux des comptes de PhotoStation ne sont pas les mêmes. Merci quand même. A mon avis, ces informations ne sont pas dans la base photo, mais dans une base contenant la configuration générale du NAS. Mais je ne trouve pas de trace d'une telle base...
  11. gargaben

    O

    Ok merci. J'ai bien trouvé la table gérant les droits d'accès pour PhotoStation. Ces informations se trouvent dans la base 'photo', puis dans la table 'photo_access_right_for_dsm_account'. Cette dernière table contient deux informations : userid : entier qui représente l'ID du user concerné. shareid : entier qui représente l'ID d'un répertoire de photo. La corrélation entre cet ID et le vrai nom du répertoire se fait grâce à la table 'photo_share', toujours contenue dans la base 'photo'. Par contre, je n'ai pas trouvé où récupérer la corrélation entre un ID de user (le userid donc) et ses informations (son nom, son adresse mail s'il l'a déclaré, etc.). Si tu as une idée, je suis preneur. Je vais également continuer à chercher.
  12. gargaben

    O

    Ok merci à toi! Je regarde cela et mettrais le résultat de mes recherches dans la suite de ce post (au cas où ça pourrait servir à d'autres)
  13. gargaben

    O

    OK, si je veux "fouiller" dans cette base, comment puis-je procéder? Quelles sont les commandes possibles? Je peux recourir à phpMyAdmin ou la base n'est pas accessible par ce biais?
  14. gargaben

    O

    Hum, si c'est bien le cas, est-ce possible d'y accéder quand même via un script shell?
  15. gargaben

    O

    Salut, pour les besoins d'un script que je suis en train de rédiger, j'ai besoin de trouver où sont stockés les fichiers de configuration qui contiennent les dossiers pour lesquels les utilisateurs ont des droits d'accès (plus précisément, je souhaite récupérer la liste des droits d'accès pour Photostation). Une idée? Merci d'avance
  16. Version 2.6

    285 téléchargements

    Script permettant le montage automatique de volumes au démarrage d'une session sous mac J’ai 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 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. 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 local et a pour adresse IP 192.168.0.1 - Le script vérifie la présence du NAS sur le réseau local 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 (IMPORTANT : il faut que les accès ICMP du NAS soient ouverts aux ordinateurs sur lesquels le script doit tourner si vous utilisez le firewall du NAS). - 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 local 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». Dans cette nouvelle entrée (ou clé), il faut entrer le nom du compte du NAS avec lequel vous souhaitez monter vos dossiers réseaux, ainsi que son mot de passe. A la première exécution du script, votre mac va vous demander si vous autorisez le script à accéder à cette clé. Cliquez sur "Toujours autorisez". Si vous utilisez le mac sur lequel vous faites tourner le script via plusieurs comptes, il faudra répéter cette opération pour chacun des comptes. - 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.8 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 et 10.7. - 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 !
  17. 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