#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
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
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
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
Mais je ne suis pas un as, ne l'oublie pas
Edit:
Si j'ai trouvé quelque chose à redire :
différentier différencier
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
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