web-dev-qa-db-ja.com

OS Xからログインおよびログアウトするたびにスクリプトを実行するにはどうすればよいですか?

私が欲しいのは、変数を含むURLをサーバーに送信することです。サーバーは、ワークステーションへのログインとログアウトのタイミングに基づいて、誰かがいつ存在するかを追跡します。

com.Apple.loginwindowLoginHookを「/Users/Username/Desktop/script.sh」に設定してみました。 script.shは、ターミナルから自分で実行すると機能しますが、LoginHookからは実行されません。

スクリプトは以下を実行します。ここで、$USERは現在ログインしているユーザーの名前である必要があります。

curl -kd "author=$USER&type=inout&message=in" https://some.server.com/timetrack
5
bernk

OS Xのログイン/ログアウト時にスクリプトを実行する方法 で説明されているようにLoginHookLogoutHookを使用するのが、おそらく最も簡単なアプローチです。非推奨と見なされますが、10.8まで機能し、それを超えても機能する可能性があります。

スクリプトに正しい hashbang があることを確認して、起動プロセスがスクリプトの実行方法を認識できるようにします。結局のところ、スクリプトはRubyからPythonまたは単にBashまでのいずれかです。

したがって、たとえば:

Sudo defaults write com.Apple.loginwindow LoginHook /usr/local/bin/curl.sh

そして/usr/local/bin/curl.shは:

#!/bin/bash
curl -kd "author=${1}&type=inout&message=in" https://some.server.com/timetrack

ログインしているユーザーにアクセスするには、$1の代わりに$USERを使用する必要があります。後者は実際のシェル環境にのみ存在する変数であり、ログインスクリプトを使用する場合は存在しません。 。

2
slhck