Использование expect для входа в SVN
-
03-07-2019 - |
Вопрос
Я пытаюсь использовать автоматический скрипт, который бы входил в SVN, обновлял мои исходники, создавал архив с ними и передавал их на удаленный хост.
Проблема здесь в том, что для каждого входа в SVN (даже для оформления заказа или обновления) нам требуется ввести наш пароль.Автоматизация ввода пароля, единственный способ, который я смог найти, заключался в использовании expect для работы над этим.
Есть ли какой-либо скрипт в expect, который может позаботиться о SVN и scp для обнаружения и передачи пароля SVN, а затем SCP?
Я использую следующее:
spawn svn [lindex $argv 0]
expect " password: $"
send "$password\r"
expect {
" password: $" send "$password\r"
"^At revision "
"^Updated to revision "
}
Пароль и команду up я передаю из командной строки, но там есть угроза безопасности, если у кого-то есть доступ к истории.Ответы, упомянутые ниже, не удовлетворяют моим предварительным требованиям, также я пока не могу выполнить экспорт [некоторые другие проблемы безопасности:-(]
Решение
linuxbashscript.sh
svn up /path/to/local/copy
tar -cf backup.tar /path/to/local/copy
scp backup.tar user@192.1.1.1:/path/on/remote/host
или еще лучше пользовательский svn-экспорт, который исключит все каталоги .svn.
svn export /path/to/repo /path/to/exported
tar -cf backup.tar /path/to/local/copy
scp backup.tar user@192.1.1.1:/path/on/remote/host
Другие советы
Если вы используете протокол svn + ssh для доступа к репозиторию SVN, вы можете использовать ключи SSH и ssh-agent для управления квитированием, поэтому вам не нужно вводить пароли.
Лично я бы использовал ANT для выполнения всех этих задач, а затем вы могли бы при необходимости вызвать свой скрипт ant. Ant имеет предварительно сконфигурированные задачи для svn и scp, а также многие другие задачи типа автоматизации сборки.
Если бы (как предложил Дэйв) вы использовали Ant, в вашем распоряжении были бы следующие задачи:
- SvnAnt ( СвнАнт ) выполнять выезды, регистрации заезда и все промежуточные действия
- Муравьиная СМОЛА задача по созданию архива
- Муравей SCP задача опубликовать его
Вы можете сохранить пароли в отдельный файл свойств, если вас беспокоит безопасность.