Aller au contenu

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. 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+
  3. 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+
  4. @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.
  5. @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
  6. Il suffit juste de mettre un devant chaque caractère espace dans le nom de ton partage
  7. 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?
  8. 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....
  9. 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...
  10. 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.
  11. 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)
  12. 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?
  13. gargaben

    O

    Hum, si c'est bien le cas, est-ce possible d'y accéder quand même via un script shell?
  14. 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
  15. 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
×
×
  • 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.