Re: LogoutHook not working
Re: LogoutHook not working
- Subject: Re: LogoutHook not working
- From: <email@hidden>
- Date: Sun, 4 Mar 2007 15:52:33 +0100
- Thread-topic: LogoutHook not working
Axel,
you were right about everything. I logged in as root and there was the Flex folder and logfiles created.
The reason I used the (path to documents folder from user domain as string) construct was I am planning add this loginhook om my fellow workers Macs. When I hard wired "Macintosh HD:Users:gunno:Documents:Flex:FlexLogTest.txt" it worked.
Many, many thanks
Gunno Ivansson
---------------------------------------------------------------------
On 4/03/07 13:44, email@hidden wrote:
Hi everyone,
I have been struggling with getting a logout hook to run an applescript, but nothing works.
I know almost nothing about shell scripts and I have followed intructions on the internet (developer.apple and macosxhints). This is one version of the script:
#!/bin/bash
#logoutscript
timestamp=`date ''+%Y/%m/%d/%H.%M.%S''`
logfile="/Users/gunno/Documents/Flex/logoutTime.txt"
myApp="/Library/Hooks/logout.app/"
echo $timestamp >> "$logfile"
open "$myApp"
exit 0
There are some logical problems here. ;-)
When a user logs out, a kAELogOut Apple Event is sent to process loginwindow.
Process loginwindow then sends quit events to every application and processes, foreground and background, running on behalf of the user who is loging out.
When those applications and processes have been sucessfully quit, loginwindow resets various system pieces, and then executes your logout script, from within a very bare environment.
And... you are then trying to launch (with the open command) a new foreground, high-level, application!
In the best case, that attempt will just silently fail, without any harmful consequences.
On the other hand, a logout script is executed as user root, not as the user who logs out.
This of course means that the script has to be double-checked!
But this also means that the script's context isn't the user's context.
I have wrote to defaults and set the execution bit.
Instead of 'open "$myApp"' I have tried various solutions with osacript to no avail. Everything is fine from the terminal, but not when logging out. I have saved my applescript as application, application bundle, script and text.
My applescript:
on run
set gLogFile to (path to documents folder from user domain as string) & "Flex:FlexLogTest.txt"
set fileRef to open for access file gLogFile with write permission
set theText to (current date) as string
write theText to fileRef starting at ((get eof of fileRef) + 1)
close access fileRef
0
end run
So, assuming above script could be successfully run from the logout script, it would be very likely that gLogFile in fact is the path to a file in root's home directory.
The system log shows this error:
(62: coreservicesd)tfp: failed on 0:
Such a log line may be written under various circumstances; if you are you sure it is related to your attempts, don't other lines appear too?
What am I doing wrong?
I'm not sure that even osascript could prove very useful in a logout context.
I would first try with something very simple, for example by replacing your line
open "$myApp"
with something like:
osascript -e '2 + 2' >>"$logfile"
If this works, you could then check with:
osascript -e 'path to documents folder from user domain as string' >>"$logfile"
for example, and then progress with more and more sophisticated operations.
Could you let us knwow?
HTH,
Axel
_______________________________________________
Do not post admin requests to the list. They will be ignored.
AppleScript-Users mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
Archives: http://lists.apple.com/archives/applescript-users
This email sent to email@hidden