【问题标题】:LaunchDaemon not launching scriptLaunchDaemon 不启动脚本
【发布时间】: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 的身份运行脚本,它会正确识别登录的人。所以我知道脚本本身可以工作。我只是无法让启动代理或启动守护进程加载它。

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

【问题讨论】:

    标签: bash macos launchd


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-18
      • 1970-01-01
      相关资源
      最近更新 更多