how to execute if else condition with ssh to remote server

27,271

Solution 1

#!/bin/sh
ssh -t -t rxapp@$1 "echo SUCCESS; /etc/init/ntp $2" || echo "FAIL: Could not connect to remote server"

or with 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

You need to separate the parts that run on the remote server upon successful connection from the parts that run locally when the connection fails.

Solution 2

You don't need ' ' instead if you are trying to use backticks - that is not required either.

try this :

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
Share:
27,271
Kaku
Author by

Kaku

Updated on December 08, 2020

Comments

  • Kaku
    Kaku over 3 years

    I am using following script to remote connection to a server and then if connection is successful then echoing success and if success then trying to sudo a file .If connection failed then it should echo 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'
    

    Here $1 and $2 are given on command line . But this is not getting successful.Script only doing successful ssh but not running sudo and other echo commands. Output : Successful SSH but one exiting it showing following

    ./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
    

    ANy help please ? or any alternative to it will be helpful too.