Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: создание каталогов на удаленном сервере, через ssh  (Прочитано 801 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн alex-sky

  • Автор темы
  • Участник
  • *
  • Сообщений: 189
    • Просмотр профиля
я пытаюсь запусить ряд команд на удаленном сервере, но они не работают

#!/usr/bin/env sh

#очищаем целевой каталог перед развертывание приложения
mvn clean package

echo 'Copy files to deploy server'

#создаем набор нужных директорий
ssh -i ~/.ssh/id_rsa it@xxx.xxx.xxx.xxx << EOF

  createApps(){

   mkdir ~/apps
  }


  createDeploy(){

  mkdir ~/apps/deploy

  }



  createUploads(){

 mkdir ~/apps/uploads

}

 if ! [ -d ~/apps/ ]

   then

     echo 'No directory is called `apps`. Creating...'
     createApps

   else

      echo 'The directory `apps` is here.'

  fi


 if ! [ -d ~/apps/deploy/ ]

   then

     echo 'No directory is called `deploy`. Creating...'
     createDeploy

   else

      echo 'The directory `deploy` is here.'

  fi

 if ! [ -d ~/apps/uploads/ ]

   then

     echo 'No directory is called `uploads`. Creating...'
     createUploads

   else

      echo 'The directory `uploads` is here.'

  fi

EOF

# scp - secure copy - Утилита для копирования файлов между удаленными машинами
# работает поверч ssh, поэтому нужено указывать секретный ключ, который мы ранее создали
# \ - Символ указывает переход на новую строку
#target - директория, где находится файл с артефактом приложения
#it@10.128.4.119:/home/it/ - указали имя пользователя, адрес хоста и директорию, куда нужно
# скопировать артефакт

scp -i ~/.ssh/id_rsa \
     target/twitter-0.0.1-SNAPSHOT.jar \
     it@10.128.4.119:/home/it/apps/deploy/


echo 'Restart server...'
sleep 5
echo '----------------'
# << EOF - указываем, что эта комбинация открывает поток на вход которого будут переданы данные
# в виде ssh -i ~/.ssh/id_rsa it@10.128.4.119
#  << EOF - после этого пишем ряд команд, которые должны будут выполниться на удаленном сервере
# pgrep name_process - Выполняет поиск процессов по указанному имени
# Xargs -  читает аргументы из стандартного ввода, разделенные пробелами или символами новой строки
# kill -9 - завершаем выбранные ранее процессы (по имени java)
# nohup — утилита, которая позволяет запустить команду,
# защищенную от зависания с выходом на non-tty (игнорирует потерю сигналов связи SIGHUP)
# java -jar twitter-0.0.1-SNAPSHOT.jar аргументы, команды nohup
# java -jar - запускает указанный артефакт на выполнение
# > log.txt - указываем файл, кужа нужно выводить логи, при запуске программы
#  & - указывает, что утилита nohup  будет работать в фоновом режиме и если сессия, в которой мы выполняем
# запуск приложения, будет закрыта, то выполение приложения продолжиться все равно
# EOF закрывает открытый ранее входной поток команды на удаленном сервере
ssh -i ~/.ssh/id_rsa it@10.128.4.119 << EOF


pgrep java | xargs pkill -9 -f java
nohup java -jar /home/it/apps/deploy/twitter-0.0.1-SNAPSHOT.jar > log.txt &

EOF

#Таким образом мы перезапустили сервер-приложений, tomcat
# для начала мы завершили все старые процессы, затем скопировали новый артефакт, который был
# развернут JVM и запущен на выполнение
#


echo 'Bye'

получаю ошибки

Цитировать
Copy files to deploy server
./deploy.sh: line 10: apps: command not found
./deploy.sh: line 10: apps: command not found
./deploy.sh: line 10: deploy: command not found
./deploy.sh: line 10: deploy: command not found
./deploy.sh: line 10: uploads: command not found
./deploy.sh: line 10: uploads: command not found

Эта указание на строку

ssh -i ~/.ssh/id_rsa it@xxx.xxx.xxx.xxx << EOF ...

Оффлайн БТР

  • Заслуженный пользователь
  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 6161
    • Просмотр профиля
echo 'No directory is called `apps`. Creating...'
слово apps в косых кавычках интерпретируется как команда для выполнения. Попробуйте обрамить её двойными кавычками или другим выделением.

Оффлайн alex-sky

  • Автор темы
  • Участник
  • *
  • Сообщений: 189
    • Просмотр профиля
echo "The directory 'apps' is here."
использовал вот такой синтаксис и все ошибки пропали.
Спасибо.

 

Страница сгенерирована за 0.029 секунд. Запросов: 25.