Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how to execute if else condition with ssh to remote server

Tags:

shell

unix

ssh

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.

like image 612
Kaku Avatar asked Oct 19 '25 05:10

Kaku


2 Answers

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

like image 198
chepner Avatar answered Oct 22 '25 05:10

chepner


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
like image 26
cherry2891 Avatar answered Oct 22 '25 03:10

cherry2891



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!