如何使用ssh执行if else条件到远程服务器

时间:2013-11-26 14:21:15

标签: shell unix ssh

我使用以下脚本远程连接到服务器然后如果连接成功则回显成功,如果成功则尝试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

请帮忙吗?或任何替代方案也会有所帮助。

4 个答案:

答案 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"