nasnetstep
@nasnetstep

Как правильно написать BASH файл?

Постоянно выполняю одни действия

  1. ssh -i /var/www/keys/my_key.pem user@xx.xx.xx.xx (ниже идут действия уже на сервере через ssh)
  2. cd /var/www/
  3. git fetch
  4. git reset --hard origin/my_branch
  5. bash my_bash.sh


Вопросы:
Как правильно написать bash.sh который будет выполнять подобные действия?
Как задать параметр имени ветки (my_branch) для выполнения bash.sh?
Как выполнить ssh со списком команд (2, 3, 4,5)?

Спасибо всем за ответы, я уже сам ответил на последний вопрос, может кому-то пригодиться:

ssh -i /var/www/keys/my_key.pem user@xx.xx.xx.xx "cd /var/www/ && git fetch && git reset --hard origin/$1 && bash my_bash.sh"
  • Вопрос задан
  • 2932 просмотра
Пригласить эксперта
Ответы на вопрос 5
jlekapb
@jlekapb
.do
запускать как-то так: sh ./bash.sh my_branch

#!/bin/bash

ssh -i /var/www/keys/my_key.pem -f user@xx.xx.xx.xx
cd /var/www/
git fetch
git reset --hard origin/$1
bash my_bash.sh
Ответ написан
gbg
@gbg
Любые ответы на любые вопросы
  1. Натурально, скопировать это дело в файл с расширением .sh
  2. Дописать в начало строку #!/bin/bash
  3. Параметры командной строки подставляются вместо $1, $2, $3 и так далее.
  4. Дать скрипту право на исполнение.
Ответ написан
Комментировать
microphone
@microphone
Сломалось - читай логи!
cat <<EOF > bash.sh
#!/bin/bash      
# Путь может быть другим -> whereis bash
case "$#" in
0)
# На входе ноль параметров, выполним ссш
ssh -i /var/www/keys/my_key.pem -f user@xx.xx.xx.xx
         ;;
1)
# На входе 1 параметр, выполним ссш и что-то еще 
ssh -i /var/www/keys/my_key.pem -f user@xx.xx.xx.xx
cd /var/www/
git fetch
git reset --hard origin/$1
bash my_bash.sh
         ;;
        *)
# На входе хрен пойми что - дай подсказаньку
                echo "Usage:  \"bash ./bash.sh my_branch\" OR \" bash ./bash.sh \" ";
        ;;
esac
EOF
Ответ написан
Комментировать
nasnetstep
@nasnetstep Автор вопроса
ssh -i /var/www/keys/my_key.pem user@xx.xx.xx.xx "cd /var/www/ && git fetch && git reset --hard origin/$1 && bash my_bash.sh"
Ответ написан
Комментировать
@kvspb
очень похоже на деплой, я бы использовал ansible
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽