如何在shell中使用“if-fi”为特定情况提供多线命令到sshpass

时间:2016-05-19 13:29:53

标签: shell ubuntu ssh sshpass

 sshpass -p "123456789" ssh -T jadams@192.168.1.85 <<'EOSSH'
    if [-d "$HOME/ajith/apache-tomcat-7.0.63/webapps/$tag_version" ] then
          sh $HOME/ajith/apache-tomcat-7.0.63/bin/shutdown.sh &&
          rm -rf  $HOME/ajith/apache-tomcat-7.0.63/webapps/$tag_version && 
          mkdir $HOME/ajith/apache-tomcat-7.0.63/webapps/$tag_version
    fi
    EOSSH

上面的代码是我正在使用的shell脚本的一部分

问题:

我面临的问题是我正在尝试执行一组命令来在远程tomcat服务器上部署webapp,我感兴趣的是我希望能够使用sshpass执行多行命令,如上所述但我收到的错误如下:

-bash:第2行:语法错误:意外的文件结尾

我正在寻找这个用例的工作示例,或者任何相关的帮助都会有很大的帮助。

我在谷歌搜索结果中尝试了很多例子,我无法做到这一点

1 个答案:

答案 0 :(得分:0)

我能够使用下面提到的代码解决问题,并为我服务 目的:

sshpass -p "password" ssh $server_name@$server_ip bash -c "'
    if [ -d "/home/motish/ajith/apache-tomcat-7.0.63/webapps/$tag_version" ]; then
        rm -rf /home/motish/ajith/apache-tomcat-7.0.63/webapps/$tag_version;
        mkdir /home/motish/ajith/apache-tomcat-7.0.63/webapps/$tag_version;
    fi
    else
        mkdir /home/motish/ajith/apache-tomcat-7.0.63/webapps/$tag_version;
    exit;
    '"