我正在设置一个启动守护程序,以运行脚本来检查是否登录了特定的本地帐户。如果该帐户已登录,则需要再次自动注销。我有一个有效的脚本,但是无法获取启动代理或启动守护程序来运行它。
我已经将它作为启动代理进行了尝试,但这没有用,并且特定用户被禁止运行脚本。它在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
的身份运行脚本,则它可以正确识别登录者。因此,我知道脚本本身可以工作。我只是无法获得launchagent或launchdaemon来加载它。
在我的生产版本中,它实际上是回显它所登录的日志文件,并正确注册了当前用户。
答案 0 :(得分:0)
原来是权限问题。我们显然已锁定了托管脚本的文件夹的权限。此后,我将其移至/Library/Scripts/
文件夹中,并能够从那里平稳地运行它。