Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 21/09/2021, à 15:06

Hizoka

Determiner l'orgine de l'appel à un script

Bonjour,

j'ai besoin de savoir comment est appelé un script :
- console
- tty
- graphique
- cron

Voici ce que j'ai fait, dites moi si j'ai oublié des possibilités d'après vous.

if [[ $(LANG=en tty) == "not a tty" ]]
then
    # Script exécuté en cliquant sur le fichier ou depuis un autre script appelé graphiquement
    Origine="Graphique"

    # Script exécuté par cron
    [[ -z ${DISPLAY} ]] && Origine="Cron"

else
    # Script exécuté dans une console ou depuis un autre script appelé en console
    Origine="Console"

    # Script exécuté depuis un TTY
    [[ -z ${DISPLAY} ]] && Origine="TTY"
fi

merci smile


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#2 Le 21/09/2021, à 19:26

Tawal

Re : Determiner l'orgine de l'appel à un script

Hello,

Si c'est pour un usage "général" (pas que pour toi), ça peut coincer.
Car par exemple, la variable DISPLAY est définie dans ma crontab utilisateur.
Donc, si c'est lancé par cron, ça m'indiquera une origine graphique.


Le savoir n'a d’intérêt que si on le transmet.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !

Hors ligne

#3 Le 21/09/2021, à 22:08

Hizoka

Re : Determiner l'orgine de l'appel à un script

Bien vu !

Il m'arrive en effet d'en mettre une aussi...
Il faudrait que les gens la désactive dans le cron... arf...

EDIT :
Après pas mal de tests infructueux, j'en suis là :

PPPID=$(ps h -o ppid= $PPID)
Parent=$(ps h -o %c $PPPID)

case ${Parent,,} in
    # Script éxecuté par cron
    cron) Origine="Cron" ;;

    # Script exécuté depuis un TTY
    login) Origine="TTY" ;;

    # Plasmashell, konsole, kate, dolphin...
    *)
        # Script exécuté en cliquant sur le fichier ou depuis un autre script appelé graphiquement
        Origine="Graphique"

        # Script exécuté dans une console ou depuis un autre script appelé en console si c'est interactif
        [[ -t 0 ]] && Origine="Console" ;;
esac

Dernière modification par Hizoka (Le 21/09/2021, à 22:48)


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#4 Le 22/09/2021, à 09:53

Tawal

Re : Determiner l'orgine de l'appel à un script

Re,

Si je lance tes commandes PPPID et Parent depuis mon tty2, j'obtiens : systemd en Parent
Donc, ça renverrait "Console" alors que je suis dans un tty.

Ça fonctionne depuis un terminal graphique.

Mais au vu de mon niveau, il est possible que je dise n'importe quoi.

PS: tests effectués depuis une Debian wink


Le savoir n'a d’intérêt que si on le transmet.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !

Hors ligne

#5 Le 22/09/2021, à 10:24

Hizoka

Re : Determiner l'orgine de l'appel à un script

Merci de tes retours.

Pour le coup, je vais utiliser la commande tty alors pour différencier.

PPPID=$(ps h -o ppid= $PPID)
Parent=$(ps h -o %c $PPPID)

if [[ ${Parent,,} == "cron" ]]
then
    # Script éxecuté par cron
    Origine="Cron"

else
    # Script exécuté depuis un TTY
    if [[ $(tty) == "/dev/tty"* ]]
    then
        Origine="TTY"

    else
        # Script exécuté en cliquant sur le fichier ou depuis un autre script appelé graphiquement
        Origine="Graphique"

        # Script exécuté dans une console ou depuis un autre script appelé en console si c'est interactif
        [[ -t 0 ]] && Origine="Console"
    fi
fi

EDIT : Correction

https://www.larousse.fr/dictionnaires/francais/diff%C3%A9rentier/25452 a écrit :

Différencier = distinguer par une différence. Avec un c. Mot du vocabulaire courant.
Différentier = calculer la différentielle de. Avec un t. Terme technique de mathématiques.

Dernière modification par Hizoka (Le 22/09/2021, à 11:25)


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#6 Le 22/09/2021, à 10:50

Tawal

Re : Determiner l'orgine de l'appel à un script

Ben là, j'ai plus rien à dire tongue

Mais je ne suis pas un as, ne l'oublie pas wink

Edit:
Si j'ai trouvé quelque chose à redire :
différentier différencier smile

Dernière modification par Tawal (Le 22/09/2021, à 10:51)


Le savoir n'a d’intérêt que si on le transmet.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !

Hors ligne

#7 Le 22/09/2021, à 11:26

Hizoka

Re : Determiner l'orgine de l'appel à un script

C'est cool, j'attends voir si quelques autres personnes peuvent me faire un retour smile

Merci beaucoup.


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#8 Le 22/09/2021, à 11:31

Tawal

Re : Determiner l'orgine de l'appel à un script

De rien, c'est avec plaisir.
C'est plus facile de corriger que de concevoir à mon humble avis.


Le savoir n'a d’intérêt que si on le transmet.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !

Hors ligne