Is it possible to run a script when and only when a user is logged out? Why I want to do this is so I can change the login message (
sudo defaults write /Library/Preferences/com.apple.loginwindow LoginwindowText "Message"). Is there a way to do this?
Machints has got a sample script available here to write the logon and logoff events to a log file.
You basically need to write your script, give it execute rights and then add it to the
sudo defaults write com.apple.loginwindow \ LogoutHook /usr/local/bin/logoutscript
For some more advanced script you can also have a look here
Have a look at the launchd services. It's the built in service management system used by OSX. Some suggestions are to have launchd monitor a file, and using the logoutHook above, touch the file, which will trigger launchd to run. In the launchd job you can sleep the process for a few seconds to ensure that logout is completed.
Not the ideal solution, but could work.
See here for how to run a script: How can I run/stop/relaunch an application automatically, at boot/login/some other time?
Have your script check if user logged in. If yes, exit. If no, do your thing.
You can change your login screen text, no need to run a script if this is a one-time or infrequent change. You have to add the key
to /Library/Preferences/com.apple.loginwindow.plist either with a text editor or by a terminal command which does the same thing. This article describes both ways.