Login/Logout script

Dear readers

I use SnowLeopard 10.6.2 and need to do some special tasks at login and logout of an sepcific user.

My problem is, how do I send a string "login" respectively "logout" from computer "A", where the login/logout script runs, to computer "B" where some other tasks need to be done.

Thank you everyone to informations an tipps

Kind regards
Thomas Thaler

Remote login must be turned on, or some add-on app must accept commands on a listening port. Third party apps include LANDesk, LanRev, or even ARD (not technically an add-on, since the agent is included with the OS.

If remote login is enabled on B, then ssh <an_admin_username>@B
enter the password for that admin username, then type the command to perform.

I find it easier to put a loginhook and/or a logouthook on the machine, then no remote login needs to occur from then on.

The -hook files contain the path to the script to perform if logname is the name in question, else exit. If you've logged in remotely, you'll need to grep the output of "who" for the username you are looking for.

defaults write /Library/Preferences/com.apple.loginwindow LoginHook /path/to/script

defaults write /Library/Preferences/com.apple.loginwindow LogoutHook /path/to/script

Then, no matter whether you are there to issue a command remotely or not, the scripts can run whenever the target username logs in.

If you need to remove the login or logout hooks:
defaults delete /Library/Preferences/com.apple.loginwindow LoginHook
and/or
defaults delete /Library/Preferences/com.apple.loginwindow LogoutHook

You could delete the scripts too, but without the hooks calling them, they are basically just text files with commands. /path/to/script is generally somewhere users don't mess with. I use /usr/local/sbin/, myself.

Thank you for your feedback.

But how do you send a string from computer A, where the login/logout scripts are running to computer B, where other tasks are running depends on the string which came from computer A?

Does this run through apple events?
How can a script on computer B read from the apple event and do some action?

Or is it required, that the script (login/logout) on computer A does a ssh connection to computer B and then does write or better touch a file which does start a script on computer B?

You see it's not that easy.

You may want to look at launchd then. Launchd is the 1 daemon that rules them all.

You basically create a laund item (.plist) and you can have it execute your scripts as log in hooks or log out hooks or as you determine it. Then put your launchd item in the respective location.

/Library/LaunchAgents - will act as a log in hook for all users

/Library/LaunchDaemons - system wide start up item - when it boots it will run regardless of if anyone has logged in or not

~/Library/LaunchAgents - runs when this specific user logs in.

Note that all launchd items run as root, so if you need it to run as a user you will have to script it to run as that user.

Now, once you have created it, you can use launchctl to load it, and if you use the -w option it is permanent and will load every time. You can even set times and dates it triggers.

for more references see this: Mac OS X Manual Page For launchd(8)