Version imprimable du sujet

Cliquez ici pour voir ce sujet dans son format original

Forums MacBidouille _ Programmation _ Lancer une commande à la fermeture de session

Écrit par : iMacX 11 Oct 2003, 16:22

Je voudrais savoir comment lancer une commande du terminal automatiquement à la fermeture de session...? Est-ce possible?

Écrit par : manu_t 11 Oct 2003, 23:22

j'ai pas (encore) la réponse.
J'ai juste essayé les fichiers .login et .logout

ça marche seulement avec une fenêtre de terminal. :cry:
Je me dis que ça doit bien être possible, avec un truc du même genre.

Écrit par : iMacX 12 Oct 2003, 01:31

Sous OS 9 il y avait moyen de mettre un fichier ds un dossier ds le dossier system pour qu'il se lance à la fermeture, cela devrait etre possible sous OS X non?
Et en applescript? Quelqu'un s'y connait?

Écrit par : ploute 12 Oct 2003, 14:29

Hello, j'ai lu ce topic ce matin et j'avais pas de réponse. Un peu plus tard en cherchant carrément autre chose, je suis tombé sur http://www.macosxhints.com/article.php?story=20031005165919533 (macosxhints.com)
Pour les gens pressés, tout est là :

CODE
sudo defaults write com.apple.loginwindow LogoutHook /le/chemin/vers/votre/script_ou_prog

Écrit par : iMacX 12 Oct 2003, 18:07

Voila, je viens d'essayer mais ca n'a pas l'air de fonctionner. Quelle est l'instruction pour annuler cette commande? J'ai été voir ds le com.apple.loginwindow mais je ne vois pas la valeur LogoutHook...

Écrit par : ploute 12 Oct 2003, 19:22

Mouarf, j'ai pas précisé que ct juste un lien vers un article que j'ai lu, mais pas essayé... encore une histoire de version du système ? Bon, en effet si je fais un write comme indiqué il bronche pas mais un read me dit qu'il n'y a rien... Par contre dans les infos apple on trouve http://developer.apple.com/documentation/MacOSX/Conceptual/SystemOverview/BootingLogin/chapter_4_section_4.html#//apple_ref/doc/uid/20000981/CJBBAIAB.

Il faut modifier le /etc/ttys pour ajouter l'option -LogoutHook avec le script qui va bien. J'essaie et j'vous dis biggrin.gif

EDIT : ça marche 8) Je suis sous 10.2.8, imac DV G3 500.
Détail intéressant : mon script de test se contentait d'écrire dans un fichier la date et l'heure (commande date quoi) suivie de "$*" biggrin.gif C'est à dire tous les paramètres passés au script. Résultat des courses : LoginWindow appelle le hook avec le nom (court) de login du user qui avait la session.

Écrit par : manu_t 13 Oct 2003, 20:04

Faut que j'apprenne à lire en diagonale :
J'avais vu cette page et sans toi j'aurais manqué l'info

merci

Écrit par : iMacX 13 Oct 2003, 21:41

QUOTE (ploute @ 12 Oct 2003, 20:22)
Il faut modifier le /etc/ttys pour ajouter l'option -LogoutHook avec le script qui va bien. J'essaie et j'vous dis biggrin.gif

Ds le fichier ttys, je rajoute simplement "-logoutHook /chemin du fichier" a la suite de ce qu'il y a ds ce fichier?

En dessous de ca:

tty05 "/usr/libexec/getty std.9600" unknown off secure
tty06 "/usr/libexec/getty std.9600" unknown off secure
tty07 "/usr/libexec/getty std.9600" unknown off secure


ou de ca:

ttyqd none network
ttyqe none network
ttyqf none network

Écrit par : ploute 13 Oct 2003, 22:08

Non (as-tu lu l'article d'apple ? ok il parle de plein de trucs dont tu te fiches)

Il s'agit d'un argument de la commande consolewindow, tu dois mettre ça comme dans cet exemple :
(ici le script c'est "/Users/bob/bin/logout.sh")

CODE
console "/System/Library/CoreServices/loginwindow.app/Contents/MacOS/loginwindow -LogoutHook /Users/bob/bin/logout.sh" vt100 on secure window=/System/Library/CoreServices/WindowServer onoption="/usr/libexec/getty std.9600"

Et attention si le chemin vers le fichier comporte des espaces, il faut mettre des antislash devant les espaces, comme ne le suggère pas ta question wink.gif

Écrit par : iMacX 13 Oct 2003, 22:14

QUOTE (ploute @ 13 Oct 2003, 23:08)
Non (as-tu lu l'article d'apple ? ok il parle de plein de trucs dont tu te fiches)

Il s'agit d'un argument de la commande consolewindow, tu dois mettre ça comme dans cet exemple :
(ici le script c'est "/Users/bob/bin/logout.sh")
CODE
console "/System/Library/CoreServices/loginwindow.app/Contents/MacOS/loginwindow -LogoutHook /Users/bob/bin/logout.sh" vt100 on secure window=/System/Library/CoreServices/WindowServer onoption="/usr/libexec/getty std.9600"

Et attention si le chemin vers le fichier comporte des espaces, il faut mettre des antislash devant les espaces, comme ne le suggère pas ta question wink.gif

Ok, donc je mets tout ca ds le terminal et je change juste "/Users/bob/bin/logout.sh" par le chemin d'acces vers mon script shell, c'est ca?

Écrit par : ploute 13 Oct 2003, 22:58

QUOTE (iMacX @ 13 Oct 2003, 23:14)
Ok, donc je mets tout ca ds le terminal et je change juste "/Users/bob/bin/logout.sh" par le chemin d'acces vers mon script shell, c'est ca?

Pas du tout ohmy.gif

Désolé j'ai pas été très clair, tu étais plus près de la solution avant... Reprenons point par point :

- Il s'agit bien de modifier le fichier /etc/ttys. Ce n'est pas une commande à taper dans le Terminal.

- Dans ce fichier il y a cette ligne, elle se trouve en haut après quelques commentaires :
CODE
console "/System/Library/CoreServices/loginwindow.app/Contents/MacOS/loginwindow" vt100 on secure window=/System/Library/CoreServices/WindowServer onoption="/usr/libexec/getty std.9600"


- Il faut y ajouter ' -LogoutHook /Users/bob/bin/logout.sh' , pas à la fin de la ligne, mais juste après le mot 'loginwindow', juste avant la fermeture des guillemets. On obtient ceci :
CODE
console "/System/Library/CoreServices/loginwindow.app/Contents/MacOS/loginwindow  -LogoutHook /Users/bob/bin/logout.sh" vt100 on secure window=/System/Library/CoreServices/WindowServer onoption="/usr/libexec/getty std.9600"
EDIT : Ne pas copier-coller les lignes telles quelles, car normalement c'est une seule ligne de texte, avec retours à la ligne à cause de la présentation HTML de cette page.

- Effectivement, '/Users/bob/bin/logout.sh' est un exemple, tu mets le vrai chemin vers ton script à toi que tu as.

- Attention, pour modifier ce fichier, il faut être 'root'. Pour ouvrir ce fichier avec TextEdit avec les droits root, taper ceci dans le Terminal (bon tu connais sudo, il va te demander ton mot de passe) :
CODE
sudo /Applications/TextEdit.app/Contents/MacOS/TextEdit /etc/ttys


PS : je crois comprendre que tu n'est pas très sûr de toi (dans le cas contraire, tu devrais t'inquiéter biggrin.gif), alors fais très attention, il vaut mieux savoir ce qu'on fait en modifiant ce fichier !

Écrit par : iMacX 15 Oct 2003, 13:34

Merci beaucoup pour ces expliquations très claires, j'essaye ce soir et je dirai quoi...

Écrit par : iMacX 18 Oct 2003, 00:15

Un tout grand merci, ca fonctionne impec... biggrin.gif

Écrit par : padbrest 29 Oct 2008, 21:00

Je suis bien intéressé par le message ci-dessous, mais l'échange date de... cinq ans !
Est-ce que cette formule de sorcellerie est encore valable pour Tiger et Leopard ?
Merci !

CITATION(ploute @ 13 Oct 2003, 23:58) [snapback]440109[/snapback]
(...) Reprenons point par point :

- Il s'agit bien de modifier le fichier /etc/ttys. Ce n'est pas une commande à taper dans le Terminal.

- Dans ce fichier il y a cette ligne, elle se trouve en haut après quelques commentaires :
CODE
console "/System/Library/CoreServices/loginwindow.app/Contents/MacOS/loginwindow" vt100 on secure window=/System/Library/CoreServices/WindowServer onoption="/usr/libexec/getty std.9600"


- Il faut y ajouter ' -LogoutHook /Users/bob/bin/logout.sh' , pas à la fin de la ligne, mais juste après le mot 'loginwindow', juste avant la fermeture des guillemets. On obtient ceci :
CODE
console "/System/Library/CoreServices/loginwindow.app/Contents/MacOS/loginwindow  -LogoutHook /Users/bob/bin/logout.sh" vt100 on secure window=/System/Library/CoreServices/WindowServer onoption="/usr/libexec/getty std.9600"
EDIT : Ne pas copier-coller les lignes telles quelles, car normalement c'est une seule ligne de texte, avec retours à la ligne à cause de la présentation HTML de cette page.
- Effectivement, '/Users/bob/bin/logout.sh' est un exemple, tu mets le vrai chemin vers ton script à toi que tu as.
- Attention, pour modifier ce fichier, il faut être 'root'. Pour ouvrir ce fichier avec TextEdit avec les droits root, taper ceci dans le Terminal (bon tu connais sudo, il va te demander ton mot de passe) :
CODE
sudo /Applications/TextEdit.app/Contents/MacOS/TextEdit /etc/ttys


Propulsé par Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)