检查SSH连接和调用函数,执行命令

check SSH connection and call function, execute command

我在配置 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 功能在登录时未在客户端上执行。我如何确保它发生?如果没有,如何捕获错误?

假设这一切都应该在远程机器上 运行 然后你需要把它全部放在远程命令中。

当 运行 在非交互式上下文中时,ssh 不会神奇地进入远程主机上的 shell 以获取 运行ning 脚本的其余部分(想想如何这需要工作一分钟)。

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 的输出,这将使您 "Sorry" 作为输出。