Mavericks を実行している 2010 MBA で autossh を実行しています。スクリプトは正常に実行され、コマンドラインから期待どおりに機能しますが、launchd で実行すると機能しません。
launchd plist に PATH を含めようとしましたが、役に立ちませんでした。
スクリプトは次のとおりです。
#!/bin/bash
/opt/local/bin/autossh -M 0 -f -o "ServerAliveInterval 30" -o "ServerAliveCountMax 3" -o "ExitOnForwardFailure yes" -R 19990:localhost:22 mnewman@super.myddns.rocks -p 10000
「ExitOnForwardFailure yes」の有無にかかわらず試しました
plist は次のとおりです。
<?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>Disabled</key>
<false/>
<key>EnvironmentVariables</key>
<dict>
<key>PATH</key>
<string>/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin
</string>
</dict>
<key>KeepAlive</key>
<true/>
<key>Label</key>
<string>com.mgnewman.autossh</string>
<key>ProgramArguments</key>
<array>
<string>/Users/mnewman/bin/autossh.sh</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
PATH キーの有無にかかわらず試しました。
このマシンにリモートでログインできるようにしたいです。また、sshだけを使用してこれを試しましたが、コマンドラインとlaunchdから正常に実行されます:
#!/bin/bash
ssh -NTC -o ServerAliveInterval=60 -o ExitOnForwardFailure=yes -R 19999:172.16.0.56:22 mnewman@super.myddns.rocks -p 10000
もちろん、ssh が機能するので、実際には autossh は必要ありませんが、なぜ機能しないのか知りたいです。