スケジュールされたアカウントロックMac OS X


4

一定時間操作しないとパスワードが必要になるように画面を自動的にロックするようにMac OS Xアカウントを設定できますが、スケジュール(毎日午後5時30分など)を使用して同じことを実行できますか?特定の時間にコンピューターの電源をオン/オフにしたり、スリープから復帰したり、スリープから復帰させたりすることができます。

回答:


4

launchdこれを使用して使用できます。次のxmlを新しいテキストファイルに配置~/Library/LaunchAgents/し、接尾辞が.plist。たとえば、私のものは~/Library/LaunchAgents/logoutAt1730.plistです。

<?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
        <key>Label</key>
        <string>Logout At 5:30 PM</string>
        <key>ProgramArguments</key>
        <array>
            <string>/System/Library/CoreServices/Menu Extras/User.menu/Contents/Resources/CGSession</string>
            <string>-suspend</string>
        </array>
        <key>StartCalendarInterval</key>
        <dict>
            <key>Hour</key>
            <integer>17</integer>
            <key>Minute</key>
            <integer>30</integer>
        </dict>
    </dict>
    </plist>

現在の電源サイクルで実行する場合(たとえば、これを有効にするために再起動する必要はありません)を使用launchctl load ~/Library/LaunchAgents/logoutAt1730.plistしてlaunchd、新しいアイテムについて通知します。次にログインするときに自動的にロードされるはずです。

launchctl listラベル文字列(午後5時30分にログアウト)を使用して検索しlaunchd、アイテムについて認識していることを検証します。

ワークステーションでこれが機能することを確認しました。なぜそうなのかわかりcronません。


1
はい、うまくいきました、ありがとう!ログアウトの代わりに、ファイルにsuspendという名前を付けました。それが可能かどう今、私はちょうど、ポップアップでユーザの確認を取得する必要があります- -私は別の質問を開きます。apple.stackexchange.com/q/49946/8699
newenglander

ここで新しい質問が出てきました、参考
newenglander

4

編集:cronこの特定のユースケースで動作しない理由はわかりませんが、この答えはを使用した(現在より正確な)答えに取って代わりlaunchdます。

crontab -eターミナルアプリケーションで使用して、次のように適切なタイミングでCrontabに追加/System/Library/CoreServices/Menu\ Extras/User.menu/Contents/Resources/CGSession -suspendします(午後5時30分):

30 17 * * * /System/Library/CoreServices/Menu\ Extras/User.menu/Contents/Resources/CGSession -suspend


ヒントをありがとう、それは私にはうまくいきませんが、それは別の質問です。(午後5時に7ではなく17になりますか?)
newenglander

ああ、その場でやった。良い目。/ System / Library / CoreServices / Menu \ Extras / User.menu / Contents / Resources / CGSession -suspendコマンドを単独で試してみたところ、うまくいきました。どのOSを実行していますか?
zwerdlds

ライオン。コマンド自体も私にとっては機能しましたが、数分後にcrontabを設定しようとしましたが、指定された時間が来ても何も起こりませんでした。
-newenglander

うーん、私は同じ問題を経験しています。今夜調べます。おそらく、スクリプトとして機能しますか?
-zwerdlds

運がありません。cronjobs(root)を実行しているユーザーは、少なくともこのコマンドを使用して、別のユーザーでサスペンドを呼び出すことはできません。
-newenglander

0

似たようなものが欲しかったのですが、特定の時間に常にロックするのではなく、特定の条件でのみロックしたかったのです。これらの条件を確認するために使用したスクリプトはcronによってトリガーされたため、同じ問題が発生しました。

CGSession -suspendcronjob を試してみて、トリガーされたときにConsole.appがエラーをログに記録し、rootと現在ログインしているユーザーのみがユーザーの簡易切り替えをトリガーできることを通知しました。だから私のソリューション:ルートとして実行します。

そのため、私のスクリプトでは、コンピューターをロックするために以下を使用しました。

sudo /usr/bin/osascript -e 'tell application "System Events" to do shell script "/System/Library/CoreServices/Menu\\ Extras/User.menu/Contents/Resources/CGSession -suspend"'

複雑な?はい。ワーキング?ポジティブ!


sudo .../CGSession -suspend(AppleScriptを使用せずに)直接使用しても機能しませんでしたか?
nohillsideの

うん、そうではなかった。理由はわかりません。
ギヨーム・ボドロー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.