启动守护程序不启动脚本



我正在设置一个启动守护进程来运行一个脚本,该脚本检查特定本地帐户是否已登录。如果该帐户已登录,则需要再次自动注销。我有一个工作脚本,但我无法获得启动代理或启动守护程序来运行它。

我已经尝试将其作为启动代理,但这不起作用,并且专门阻止特定用户运行脚本。这在 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运行脚本,它会正确识别登录的人。所以我知道脚本本身有效。我只是无法获得启动代理或启动守护程序来加载它。

在我的生产版本中,它实际上回显到它看到的日志文件已登录,并正确注册当前用户。

原来这是一个权限问题。我们显然已经锁定了我托管脚本的文件夹的权限。此后,我已将其移至/Library/Scripts/文件夹,并且能够从那里顺利运行它。