我有这样的工作:
问题是,我必须将每台服务器添加到我的作业配置中。
那么可以像这样用参数化的远程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 &
答案 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作为服务器启动