Aller au contenu

Appel D'un Script Apr


Messages recommandés

Bonjour a toutes et a tous,

voila cela fait un moment que je cherche sans pour autant trouvé la solution, j'aimerai fait en sorte que lorsque je finalise la création d'un user un script soit appeler automatiquement pour créer des dossier spécifique dans le home de celui ci.

je ne pense pas être le seul a vouloir faire se genre de chose et je pense que ce sujet a déjà été abordé mais je n'arrive pas a mettre la main dessus.

je sollicite donc votre aide :)

Lien vers le commentaire
Partager sur d’autres sites

j'aimerai fait en sorte que lorsque je finalise la création d'un user un script soit appeler automatiquement pour créer des dossier spécifique dans le home de celui ci.

Un peu de "reverse engineering" de la commande "synouser" m'a permis de te trouver une solution

Attention: je n'ai pas pris le temps de m'assurer si c'était documenté et donc ne saurais te garantir que ça reste fonctionnel en cas d'upgrade de DSM (mais j'ai bon espoir malgré tout).

  • Mettre le script dans le dossier "/usr/local/libexec/user_set".
  • Son nom est sans importance
  • Le rendre exécutable ("chmod 755" fonctionne)
  • Lui appliquer le squelette suivant:

    #!/bin/ash
    
    case $1 in
        --sdk-mod-ver)
            # important sinon la partie "--post" ne sera pas invoquée
            echo 1.0
            ;;
        --post)
            # Cette partie sera invoquée *apres* que le compte ait été créé
            # Les informations sur ce dernier sont communiquées
            # via des variables d'environnement. 
            # Parmi celle-ci, celles ci-dessous me semble utiles dans ton cas:
            # $UID_1
            # $USER_NAME_1
            # $RESULT (vaut 0 si la création du compte à réussi)
            # mettre tes commandes en dessous de cette ligne
            ;;
    esac
    exit
    
    

Note: lors de son exécution, la sortie standard et la sortie d'erreur sont redirigées. Par conséquent faudra utiliser un fichier de log de sortie ou la commande "logger" en phase de debug pour les diagnostics.

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

Un peu de "reverse engineering" de la commande "synouser" m'a permis de te trouver une solution

Attention: je n'ai pas pris le temps de m'assurer si c'était documenté et donc ne saurais te garantir que ça reste fonctionnel en cas d'upgrade de DSM (mais j'ai bon espoir malgré tout).

  • Mettre le script dans le dossier "/usr/local/libexec/user_set".
  • Son nom est sans importance
  • Le rendre exécutable ("chmod 755" fonctionne)
  • Lui appliquer le squelette suivant:

    #!/bin/ash
    
    case $1 in
        --sdk-mod-ver)
            # important sinon la partie "--post" ne sera pas invoquée
            echo 1.0
            ;;
        --post)
            # Cette partie sera invoquée *apres* que le compte ait été créé
            # Les informations sur ce dernier sont communiquées
            # via des variables d'environnement. 
            # Parmi celle-ci, celles ci-dessous me semble utiles dans ton cas:
            # $UID_1
            # $USER_NAME_1
            # $RESULT (vaut 0 si la création du compte à réussi)
            # mettre tes commandes en dessous de cette ligne
            ;;
    esac
    exit
    
    

Note: lors de son exécution, la sortie standard et la sortie d'erreur sont redirigées. Par conséquent faudra utiliser un fichier de log de sortie ou la commande "logger" en phase de debug pour les diagnostics.

Merci beaucoup je vais regarder ça le plus vite possible :)

et sinon comment tu a décrypté le script synouser? je suis preneur cela peux toujours servir :)

Lien vers le commentaire
Partager sur d’autres sites

comment tu a décrypté le script synouser?

"synouser" n'est pas un script (ce qui aurait simplifié mon enquète) mais un binaire.

Pour espionner son comportement j'utilise un outil qui n'est pas nativement inclus dans DSM: strace (que je me suis cross-compilé à l'aide de la toolchain synology).

Il permet de lancer tracer tous les appels systèmes (et optionnellement de librairies) d'une commande.

Ca m'a permis de constater que synouser enumérait (entre autre choses) les fichiers contenus dans "/usr/local/libexec/user_set" exécutait chacun d'eux (via "/bin/sh -c") avec le parametre "--sdk-mod-ver"

Me suis concocté un petit script de test et avec un peu de présévérance j'ai pu comprendre le mécanisme.

Lien vers le commentaire
Partager sur d’autres sites

Oki bon je regarderai si je peux me concocter un truck du même style, merci pour les infos.

Faudrai que je trouve a l'occasion comment decompiler les cgi mais ca c une autre histoire :)

Je vais faire une demande d'evolution a syno des que j'aurai le temps pour géré graphiquement l'ajout de script en fin de creation d'user, ca a peux d'importance pour un particulier mais pour une boite ca peux etre interessant.

En tout cas un grand merci

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.