【发布时间】:2019-08-15 18:20:38
【问题描述】:
我正在设置一个启动守护程序来运行一个脚本来检查特定本地帐户是否已登录。如果该帐户已登录,它需要再次自动注销。我有一个工作脚本,但我无法让启动代理或启动守护程序运行它。
我已经尝试将它作为启动代理,但这不起作用,并且特定用户被明确禁止运行脚本。这是在 macOS 10.14.5 上运行的。它有时在由我们的 MDM 启动时可以工作,但即使 MDM 无法访问(因此是本地脚本),我们也需要它运行。
这是我目前为止的代理:
<?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>fubar.plist</string>
<key>ProgramArguments</key>
<array>
<string>/location/of/fubar.sh</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>StartInterval</key>
<integer>30</integer>
</dict>
</plist>
这是脚本:
currentUser=$( scutil <<< "show State:/Users/ConsoleUser" | awk '/Name :/ && ! /loginwindow/ { print $3 }' )
if [ "$currentUser" == "fubarUser" ]; then
echo "$currentUser is fubarUser. Logging out"
killall loginwindow
fi
我希望它注册 fubarUser 已登录,然后回显我的消息并终止 loginwindow 从而将它们注销。
如果我在终端窗口中以root 的身份运行脚本,它会正确识别登录的人。所以我知道脚本本身可以工作。我只是无法让启动代理或启动守护进程加载它。
在我的生产版本中,它实际上回显到它看到已登录的日志文件,并且正确注册了当前用户。
【问题讨论】: