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

Is it possible to execute shell with parameterized remote ip?

我有一份这样的工作:

  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 }' | xargs kill
    nohup java -jar ${APP_NAME}.jar &

是的。使用“$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 }' | xargs kill
nohup java -jar ${APP_NAME}.jar &

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

#!/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 是一个本地 shell 文件,它定义了如何使用参数化 ip

启动 jar 作为服务器