Bash脚本从命令行运行但未启动

时间:2019-07-05 10:12:53

标签: bash ssh osx-mavericks launchd autossh

我在运行Mavericks的2010 MBA上运行autossh。该脚本可以正常运行,并且可以在命令行中按预期方式运行,但在通过launchd运行时则无法运行。

我尝试将PATH包含在启动的plist中,但这无济于事。

这是脚本:

#!/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尝试过,它在命令行和启动时都运行良好:

#!/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,但我想知道为什么它对我不起作用。

1 个答案:

答案 0 :(得分:0)

现在工作。事实证明,要使其与启动一起使用,我必须在shell脚本中添加两个参数:“-f”以在后台运行,而“ -N”不执行命令。我不知道为什么这样。

#!/bin/bash

/opt/local/bin/autossh -f -M 0 -N -o "ServerAliveInterval 30" -o "ServerAliveCountMax 3" -R 19990:localhost:22 mnewman@ksuper.myddns.rocks -p 10000