检查SSH连接和调用功能,执行命令

时间:2015-01-07 17:35:45

标签: linux bash shell ssh

我在配置RSA连接后尝试SSH客户端。我想验证SSH连接是否成功,如果是,则首先通过调用函数来源它然后在client上执行命令.Below是我试图在服务器上执行的脚本,

function set_env() {
        if [ -f /usr/pw/server/bin/setup_env.sh ]; then
                        source /usr/pw/server/bin/setup_env.sh
        elif [ -f /etc/mcell/setup_env.sh ]; then
                        source /etc/mcell/setup_env.sh
        else
                        echo "setup_env.sh not found, exiting"
                        exit 1
        fi
}

i="application_was"

if ssh clientname
then
        set_env
        mcstat -q -n $i | grep "Running"
else
        echo "Sorry"
fi

我可以通过SSH连接到客户端,但登录时不会在客户端上执行set_env功能。我如何确保它发生?如果没有错误怎么抓错?

1 个答案:

答案 0 :(得分:2)

假设这一切都应该在远程计算机上运行,​​那么你需要将它全部放在远程命令中。

当在非交互式上下文中运行时,ssh并不会为远程主机上的shell下载其余的正在运行的脚本(考虑一下如何工作一分钟)。

ssh clientname '
    if [ -f /usr/pw/server/bin/setup_env.sh ]; then
        source /usr/pw/server/bin/setup_env.sh
    elif [ -f /etc/mcell/setup_env.sh ]; then
        source /etc/mcell/setup_env.sh
    else
        echo "setup_env.sh not found, exiting"
        exit 1
    fi
    mcstat -q -n "'"$i"'" | grep "Running"' || echo "Sorry"

那会让你"抱歉"如果ssh连接失败或者源代码失败或者grep失败以及grep的输出在所有其他情况下输出为