2015-10-09 3 views
2

Это обычная практика для выполнения git pull на разработчика/постановкой/производства сервера (ы). Я часто делаю это сам; Я выполняю git pull почти 100 раз в день на моем сервере, на котором работает linux.Как сделать скрипт для выполнения git pull?

Я полагаю, пришло время сделать сценарий , чтобы улучшить это.


pull.sh будет делать эти 3 команды

  • мерзавец тянуть
  • введите свой-пароль (при приглашении)
  • сервис Nginx перезагружать

Я пробовал создать свой pull.sh здесь

#!/bin/bash 

function pull { 
    git pull 
    password 
    service nginx reload 
} 


pull ; 

Результат

После запуска скрипта, что у меня есть, я до сих пор получил приглашение на ввод пароля.

enter image description here


Любые намеки/помогает/предложения будут оценены!

+0

Какое приложение моего Dev пользователя просит вас ввести свой пароль? –

+0

Что вы устали. Какие сайты вы посетили в процессе? Это не совсем исследовательский сайт в том смысле, который вы ищете. –

+0

Каждый раз, когда я выполняю 'git pull', он обычно запрашивает у меня пароль. – ihue

ответ

5

Вы можете использовать expect скрипт для взаимодействия с аутентификацией мерзавца:

#!/usr/bin/expect -f 
spawn git pull 
expect "ass" 
send "your_password\r" 
interact 

Он ждет «АСС» текст (который соответствует «Password», «пароль», «пароль»), а затем он посылает свой пароль ,

Этот сценарий может быть вызван из другого Баш скрипт, который будет перезагружен сервер:

# Call script directly since the shell knows that it should run it with 
# expect tool because of the first script line "#!/usr/bin/expect -f" 
./git-pull-helper-script.sh 
# Without the first line "#!/usr/bin/expect -f" the file with commands 
# may be sent explicitly to 'expect': 
expect file-with-commands 

# Restart server 
service nginx reload 
+0

Это законный вопрос, я не знаю, почему 2 человека голосуют за него. Я очень признателен за вашу заботу и помогает.:) – ihue

+0

@ihue вам нужно настроить строку приглашения на «Enter ...». –

+0

сделаю. Не возражаете ли вы немного объяснить, что такое 'bin/expect -f'? – ihue

2

способ справиться с ключевой фразы использовать SSH агента: таким образом, вам нужно только ввести ваш пароль один раз.

У меня есть это в ~/.bash_profile

# launch an ssh agent at login, so git commands don't need to prompt for password 
# ref: http://stackoverflow.com/a/18915067/7552 

SSH_ENV=$HOME/.ssh/env 

if [[ -f ~/.ssh/id_rsa ]]; then 
    function start_agent { 
     # Initialising new SSH agent... 
     ssh-agent | sed 's/^echo/#&/' > "${SSH_ENV}" 
     chmod 600 "${SSH_ENV}" 
     source "${SSH_ENV}" > /dev/null 
     ssh-add 
    } 

    # Source SSH settings, if applicable 

    if [ -f "${SSH_ENV}" ]; then 
     source "${SSH_ENV}" > /dev/null 
     agent_pid=$(pgrep ssh-agent) 
     ((${agent_pid:-0} == $SSH_AGENT_PID)) || start_agent 
     unset agent_pid 
    else 
     start_agent 
    fi 
fi