Можно ли запустить оболочку с параметризованным удаленным ip-адресом?

У меня такая работа:

  1. параметризованные $ {GIT_URL} и $ {REMOTE_IP}.
  2. клонировать код по URL-адресу git и упаковать мой проект как jar
  3. scp jar-файл на удаленный IP-адрес, а затем запустите его как сервер.
  4. Я использую Публикация через плагин SSH.

Проблема в том, что мне нужно добавить каждый сервер в конфигурацию моей работы.

Так можно ли запустить оболочку с параметризованным удаленным 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 &
0
0
61
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

да. Используйте «$ 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 &

Вы когда-нибудь пробовали это? Я не думаю, что это работает.

Karl.Li 26.10.2018 13:01

На мой взгляд, jenkins не передают stdin на удаленный ip после ssh. Так вы имеете в виду, что использование "$REMOTE_IP" вместо ${REMOTE} решит эту проблему?

Karl.Li 26.10.2018 13:10

Извините, я не тестировал это, используя SSH. Просто передача значения параметра в сценарий оболочки в том же задании

ben5556 26.10.2018 13:18
Ответ принят как подходящий

Я решил это по-другому.

#!/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 - это локальный файл оболочки, который определяет, как запустить jar как сервер с параметризованным ip.

Другие вопросы по теме