我在配置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功能。我如何确保它发生?如果没有错误怎么抓错?
答案 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的输出在所有其他情况下输出为