2

OS X 10.6 での Kerberos の新しい制限により、10.5 で利用可能だったものと同様の機能を提供するスクリプトに取り組んでいます。基本的に、klist 出力を解析して、チケットの有効期限が切れているかどうかを確認し、有効期限が切れるまでの時間を表示します。10 分を過ぎると、kinit が呼び出されて GUI パスワード プロンプトが表示され、kerberos パスワードが要求されます。チケットの有効期限が切れている場合は、同じことを行います。

スクリプトは、再度呼び出す前に kinit が実行されていないことを確認するため、複数の kinit 呼び出しはありません。スクリプトは非常にうまく機能します (GeekLog から呼び出されるため、ステータスを確認できます)。問題は、今朝、画面のロックを解除しようとしたときに、システムが回転するビーチボールを出していたことです。私のスクリプトや kinit が何かをしている疑いがあります。マシンは ping 経由で利用できましたが、それ以外の場合は ssh または AFP に応答しませんでした。

だから私がしたいのは、画面がロックされているかどうか、またはスクリーンセーバーが有効になっているかどうかを検出することです。以前のバージョンの OS X では、ScreenSaverEngine がアクティブかどうかを grep で確認できましたが、現在はそうではないようです。

では、コマンドライン ツールを使用して、画面がロックされているかどうかを判断するにはどうすればよいでしょうか。画面がロックされている場合は、スクリプトを単純に終了させて​​、klist を気にしたり、kinit を実行したりしないようにします。今朝経験したロックアップを防ぐことができることを願っています。何か案は?

4

2 に答える 2

4

少し面倒ですが、Apple Events を介してバックグラウンド アプリに簡単にクエリを実行しSystem Events、スクリーン セーバーが実行されているかどうかを確認できます。例えば:

$ osascript -e 'tell application "System Events"' \
>  -e 'get running of screen saver preferences' \
>  -e 'end tell'
false
$ # engage screen saver after starting next command
$ sleep 5; osascript -e 'tell application "System Events"'  -e 'get running of screen saver preferences'  -e 'end tell'
true
$

ただし、おそらく、ロックがかかっている理由を本当に知る必要があります。

于 2009-09-07T22:22:44.740 に答える
0

好奇心から、OS X マシンに ssh 接続して、スクリーン セーバー / ロックの前後のプロセス リストを比較してみましたか?

それが私が試したいことです。

于 2009-09-07T17:24:25.513 に答える