IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

systemd : utiliser la Description d'un service dans l'ExecStart


Sujet :

Shell et commandes GNU

  1. #1
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 392
    Points
    19 392
    Par défaut systemd : utiliser la Description d'un service dans l'ExecStart
    Bonjour,

    j'ai un service qui m'envoie un mail local, et je me demande si, et comment, je pourrais utiliser la Description en tant que sujet du mail ?

    quelque chose comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    [Unit]
    Description=la description de mon service
     
    [Service]
    ExecStart=sh -c '/quelque/part/monScript | /usr/bin/mail -E -s "<Description>" user'
     
    [Install]
    WantedBy=default.target
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  2. #2
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 459
    Points
    13 459
    Par défaut
    Bonjour

    Question idiote: pourquoi ne l'écris-tu pas en dur ?
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  3. #3
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 104
    Points : 4 454
    Points
    4 454
    Par défaut
    bonjour

    +1 pas compris l'intérêt d'utiliser la description puisque déjà écrit en dur

    Sinon, on peut passer un paramètre au service :
    fichier: email@.service
    utilisation: systemctl start email@'erreur' (le paramètre est %i ou %I dans la ligne ExecStart)

    EDIT: si tu désires absolument des espaces, systemctl start email@Email_auto:erreur_système, il faut convertir le paramètre %i pour remplacer le séparateur par des espaces dans notre propre script passé à ExecStart
    $moi= ( !== ) ? : ;

  4. #4
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 392
    Points
    19 392
    Par défaut
    Citation Envoyé par Flodelarab Voir le message
    Question idiote: pourquoi ne l'écris-tu pas en dur ?
    parce que je suis une grosse feignasse, et, en bonne feignasse, je cherche à en faire le moins possible, et donc réutiliser l'existant.
    comme je le ferais dans uns script !

    c'est faisable, dans /etc/netctl/profile, sur Arch :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Interface=enp0s2
    #...
    ExecUpPost="/usr/bin/ethtool -s $Interface wol g"
    je n'ai à modifier l'information qu'à un seul endroit.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 104
    Points : 4 454
    Points
    4 454
    Par défaut
    Puisque j'aime coder des truc inutiles ...
    Avec le fichier /proc/self/cgroup, il est possible de voir le service "appelant".

    - Appeler directement mon script perso .sh via ExecStart = monscript.sh
    - monscript.sh

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    cgroup=$(grep '^0' /proc/self/cgroup)    #$(</proc/self/cgroup)
    serviced="${cgroup##*/}"
    # if 'user@' dans $cgroup, on ajoute option --user
    desc=$(systemctl show "$serviced" --user | awk -F"=" '/description/ {print $2}')
     
    # getmessage | /usr/bin/mail -E -s "$desc" user
    $moi= ( !== ) ? : ;

  6. #6
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 392
    Points
    19 392
    Par défaut
    mouais. c'est intéressant.
    ça peut être une solution, pour un script comportant plus de commandes et, donc, pour lequel ce traitement sera totalement imperceptible, plutôt que pour ma petite commande d'envoi de mail.

    je retiens, mais je ne l'appliquerai pas ici.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  7. #7
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 104
    Points : 4 454
    Points
    4 454
    Par défaut
    Oui, inutile

    A noter que le contenu de ce fichier peut être aussi intéressant (?) pour autre chose :
    Contenu bien différent en tty ou en console ou autre

    dans mon terminal :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    0::/user.slice/user-1000.slice/user@1000.service/app.slice/app-org.kde.konsole-e0f4502e8db841a5ad50ef0a07f203b6.scope
    script sh lancé depuis mon gestionnaire de fichier:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    0::/user.slice/user-1000.slice/user@1000.service/app.slice/app-org.kde.dolphin-331d8a98a6ff4b8ab6983c3581d5661d.scope
    en tty :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    0::/user.slice/user-1000.slice/session-4.scope
    depuis une unit systemd (vu plus haut) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    0::/user.slice/user-1000.slice/user@1000.service/app.slice/montruc.service
    $moi= ( !== ) ? : ;

Discussions similaires

  1. Réponses: 1
    Dernier message: 10/06/2021, 10h20
  2. Réponses: 4
    Dernier message: 27/09/2011, 17h17
  3. Réponses: 2
    Dernier message: 03/12/2009, 08h46
  4. Réponses: 1
    Dernier message: 26/06/2008, 16h45
  5. [Framework] Utilisation des services dans un controller
    Par Ylias dans le forum Spring
    Réponses: 2
    Dernier message: 08/06/2008, 21h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo