通过 Applescript 关闭计算机时注销用户

通过 Applescript 关闭计算机时注销用户

我正在使用以下 Applescript 运行 Time Machine 备份,然后关闭我们商店的计算机上的 OS X。

do shell script "/System/Library/CoreServices/backupd.bundle/Contents/Resources/backupd-helper"

repeat
    delay 10
    if not IsProcRunning("backupd-helper") then
        ignoring application responses
            tell application "loginwindow" to «event aevtshut»
        end ignoring
        exit repeat
    end if
end repeat

on IsProcRunning(theProc)
    try
        do shell script "ps auxc | grep \"" & theProc & "\""
        return true
    on error
        return false
    end try
end IsProcRunning

它运行正常并且关闭计算机,除非另一个用户登录,然后Security Agent会弹出窗口要求输入管理员用户名和密码。

我很好奇是否有人可以帮助我为该脚本添加检查窗口是否打开的功能Security Agent,如果是,则在相关字段中输入用户名和密码?

答案1

如果您可以进入睡眠状态而不是关机,则不需要管理员权限或其他登录用户的确认:

do shell script "tmutil startbackup -b"
tell application "System Events" to sleep

您也可以使用shutdown(它会正确弹出磁盘等等,但您可能会丢失一些未保存的更改):

do shell script "tmutil startbackup -b && shutdown -h now" with administrator privileges

~/.profile可以添加到或的shell 函数~/.bash_profile

tmshut() { sudo -s -- 'tmutil startbackup -b && shutdown -h now'; }

相关内容