是否可以使用参数化的远程ip执行shell?

时间:2018-10-26 06:40:55

标签: jenkins jenkins-plugins

我有这样的工作:

  1. 参数化的$ {GIT_URL}和$ {REMOTE_IP}。
  2. 通过git url克隆代码并将我的项目打包为jar
  3. scp jar文件复制到远程IP,然后将其作为服务器启动。`
  4. 我正在使用Publish Over SSH Plugin

问题是,我必须将每台服务器添加到我的作业配置中。

那么可以像这样用参数化的远程ip执行shell吗?

    #!/bin/sh
    scp ${APP_NAME}.jar root@${REMOTE_IP}:/root/${APP_NAME}.jar
    ssh root@${REMOTE_IP}
    cd /root
    ps -ef | grep ${APP_NAME} | grep -v grep | awk '{print $2}' | xargs kill
    nohup java -jar ${APP_NAME}.jar &

2 个答案:

答案 0 :(得分:1)

是的。使用“ $ REMOTE_IP”将其解析为参数值。

#!/bin/sh
scp ${APP_NAME}.jar root@"$REMOTE_IP":/root/${APP_NAME}.jar
ssh root@"$REMOTE_IP"
cd /root
ps -ef | grep ${APP_NAME} | grep -v grep | awk '{print $2}' | xargs kill
nohup java -jar ${APP_NAME}.jar &

答案 1 :(得分:1)

我用另一种方式解决了这个问题。

#!/bin/sh
scp ${APP_NAME}.jar root@${REMOTE_IP}:/root/${APP_NAME}.jar
ssh root@${REMOTE_IP} "sh -s" -- < /opt/jenkins/my.sh ${REMOTE_IP} ${APP_NAME}

所以my.sh是一个本地外壳文件,用于定义如何使用参数化ip将jar作为服务器启动