Как сделать svn обновление без пароля на crontab

Я новичок в svn и ssh. Я пытаюсь сделать svn обновление 5 репозиториев в моей локальной системе каждые 3 часа на crontab. Итак, для достижения этой цели я настроил ssh passwordless login, используя следующие шаги:
1. ssh-keygen
2. ssh-copy-id -i ~/.ssh/id_rsa.pub test@repo.test.in
3. Я сделал ssh test@repo.test.in Пока у меня все работает нормально. Я могу войти без пароля. Но когда я пытаюсь сделать sudo svn update в 5 репозиториях, он запрашивает пароль. Как сделать svn update без пароля. Можно ли как-нибудь обновлять репозитории каждые 3 часа на cron. Я сослался на это , но не смог получить его.
Я использую

`Ubuntu version : Ubuntu 13.04`         
OpenSSH_6.1p1 Debian-4, OpenSSL 1.0.1c 10 May 2012
0
задан 23 May 2017 в 15:39

3 ответа

Проблема в том, что, поскольку вы используете sudo, команда svn update выполняется как root, поэтому каталог ~/.ssh вашего обычного пользователя не учитывается.

Если вам нужно сделать svn update как root, то вы также должны выполнить шаги 1 и 2, которые вы описали как root, то есть с sudo. Но только делая это, вы очень хорошо знаете, что делаете.

Если бы вы могли делать все эти обновления SVN от имени обычного пользователя, это было бы намного лучшим способом. В этом случае просто удалите sudo и выполняйте команду svn update только как cronjob. Кроме того, вам также придется запускать cronjob как обычный пользователь. Обратитесь к этому ответу здесь, чтобы узнать, как выполнять cronjobs как обычный пользователь:

https://superuser.com/questions/170866/how-to-run-a-cron-job-as -a-specific-user

В вашем случае вы, вероятно, захотите что-то подобное в /etc/crontab:

 00 */3   * * *   yourusername   cd /some/path/ && svn update

Замените yourusername именем пользователя пользователя который сгенерировал пару ключей SSH и скопировал открытый ключ в test@repo.test.in и /some/path/ с путем к вашей локальной копии репозитория svn, который вы хотите проверить.

0
ответ дан 23 May 2017 в 15:39

Любая команда, запущенная с sudo (без дополнительных аргументов), будет выполняться от имени пользователя root. root не имеет доступа к вашим SSH-ключам, поэтому настройка входа без пароля не удалась.

Если ваша настройка работает, когда вы запускаете ее с собственным пользователем, это легко исправить. Чтобы запускать обновления svn в cronjob, но с вашим пользователем, попробуйте использовать опцию -u.

sudo -u yourusername svn update
0
ответ дан 23 May 2017 в 15:39

Это довольно простой ...

sudo svn update

WHHHYY? !!? !!

Я не уверен, что мне нужно сказать что-то еще, а просто набросать ответ немного подробнее ... Запуск как sudo означает, что вы работаете как root. Это означает, что ваша локальная ~/.ssh/ конфигурация имеет значение для zip.

Это также означает, что все созданные файлы принадлежат пользователю root. Не редактируется вашим пользователем. И именно поэтому (повторите этот бит вслух) мы никогда не используем sudo с subversion . Это ненужно и вредно.

Чтобы это исправить, я бы предложил стереть вашу локальную копию (если у вас есть резервная копия), а затем проверить новую копию как ваш пользователь. А в вашем crontab просто опустите sudo.

0
ответ дан 23 May 2017 в 15:39

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

Похожие вопросы: