为 vpnd 创建 Mac OS X launchd plist

为 vpnd 创建 Mac OS X launchd plist

我需要创建一个 launchd plist,使 vpnd 在启动时启动。从命令行调用时,vpnd 工作正常,但我不知道如何制作一个执行相同操作的 plist。有人能帮忙吗?以下是我到目前为止拼凑起来的:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
 <key>Label</key>
 <string>com.apple.ppp.l2tp</string>
 <key>OnDemand</key>
 <false/>
 <key>Program</key>
  <string>/usr/sbin/vpnd</string>
 <key>ProgramArguments</key>
  <array>
   <string>vpnd</string>
  </array>
 <key>RunAtLoad</key>
 <true/>
</dict>
</plist>

运行它launchctl -w没有任何效果,没有触发任何错误,也没有向控制台输出任何内容。 XML 看起来正确吗?

答案1

我从 10.4 服务器上获取了它......

/系统/资源库/LaunchDaemons/com.apple.ppp.l2tp.plist

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.apple.ppp.l2tp</string>
    <key>OnDemand</key>
    <false/>
    <key>Program</key>
    <string>/usr/sbin/vpnd</string>
    <key>ProgramArguments</key>
    <array>
        <string>vpnd</string>
        <string>-x</string>
        <string>-i</string>
        <string>com.apple.ppp.l2tp</string>
    </array>
    <key>ServiceIPC</key>
    <false/>
</dict>
</plist>

答案2

查看 /System/Library/LaunchDaemons 中的一些其他 plist 文件,该ProgramArguments条目似乎是错误的;您需要此处程序的完整路径。

删除Program密钥并尝试以下操作:

<key>ProgramArguments</key>
<array>
        <string>/usr/sbin/vpnd</string>
</array>

此外,您可能还想添加一个KeepAlive密钥。

man launchd.plist可以帮助。

相关内容