我使用以下脚本远程连接到服务器然后如果连接成功则回显成功,如果成功则尝试sudo文件 。如果连接失败,那么应该回复FAIL。 e.g
#!/bin/sh
ssh -t -t rxapp@$1
'if [$? -eq 0 ];
then
echo "SUCCESS"
sudo /etc/init/ntp $2
else
echo "FAIL: Couldnot connect to remote server"
fi'
这里$ 1和$ 2在命令行中给出。 但这并没有成功。脚本只执行成功的ssh但没有运行sudo和其他echo命令。 输出: 成功的SSH,但一个退出它显示以下
./jenkins_ucf.sh: line 9: if [$? -eq 0 ];
then
echo "SUCCESS"
sudo /etc/init.d/unifiedCommFwk $2
else
echo "FAIL: COuldnot connect to remote server"
fi: No such file or directory
请帮忙吗?或任何替代方案也会有所帮助。
答案 0 :(得分:3)
#!/bin/sh
ssh -t -t rxapp@$1 "echo SUCCESS; /etc/init/ntp $2" || echo "FAIL: Could not connect to remote server"
或if
:
if ssh -t -t rxapp@$1 "echo SUCCESS; /etc/init/ntp $2"; then
echo SUCCESS
else
echo "FAIL: Could not connect to remote server"
fi
在连接失败时,从本地运行的部件成功连接后,您需要分离在远程服务器上运行的部件。
答案 1 :(得分:1)
如果您尝试使用反引号,则不需要'' - 这也不是必需的。
试试这个:
ssh -t -t rxapp@$1
if [ $? -eq 0 ];
then
echo "SUCCESS"
sudo /etc/init/ntp $2
else
echo "FAIL: Couldnot connect to remote server"
fi
答案 2 :(得分:0)
您可以对SSH服务器执行if else条件,如下所示:
ssh user@host 'bash -s' <<'ENDSSH'
if [ someCommand ];
then
echo "SUCCESS"
else
echo "FAIL"
fi'
ENDSSH
基本上拉from this answer
答案 3 :(得分:-1)
简单地做
ssh host -l username "if yourcommand; then echo Success; else echo Failure;fi"
例如
#!/bin/bash
CMD="if $1; then echo Success; else echo Failure; fi"
ssh host -l user "$CMD"