матрица и svn пароль

Предположение, что я не могу выполнить что-то вроде этого с Матрицей:

run("svn update --password 'password' .")

как надлежащий путь состоит в том, чтобы передать Матрице пароль для удаленной интерактивной командной строки?

Проблема состоит в том, что repo проверяется как svn+ssh, и у меня нет http/https/svn опции

7
задан hyperboreean 1 April 2010 в 16:13
поделиться

5 ответов

Попробуйте SSHkey. Это позволяет вам подключаться к серверу без пароля. В этом случае вам нужно будет установить sshkey между вашим удаленным сервером и репо.

На удаленном сервере: сгенерировать пару ключей

 $ ssh-keygen -t dsa

Оставьте пароль пустым! Это создаст 2 файла

  • ~ / .ssh / id_dsa (закрытый ключ)
  • ~ / .ssh / id_dsa.pub (открытый ключ)

Затем добавьте содержимое в id_dsa.pub в ~ / .ssh / authorized_keys на сервере репо.

Ваш удаленный сервер сможет обновлять исходное дерево без необходимости ввода пароля.

7
ответ дан 6 December 2019 в 15:20
поделиться

Вам следует взглянуть на документацию по env Fabric . Там говорится, что вы должны сделать что-то вроде этого:

from fabric.api import env

env.user = 'your_user'
env.password = 'your_password'

Надеюсь, это поможет!

0
ответ дан 6 December 2019 в 15:20
поделиться

Некоторое время назад у нас была проблема, похожая на эту, и мы фактически предложили новую функцию для Fabric, но разработчик, с которым мы говорили, предложил это вместо этого.

import getpass
password = getpass.getpass('Enter SVN Password: ')
run("svn update --password '%s'" % password)

Вам будет предложено ввести пароль, когда придет время для запуска этой команды фабрикой.

Я полагаю, что это отобразит ваш пароль в журнале структуры, поэтому лучшим вариантом было бы заставить SVN запрашивать пароль и выводить его в него.

run('echo %s | svn update --password' % password)

Я не использую SVN, поэтому боюсь, что не уверен, возможно ли это. Я надеюсь, что кто-то еще может помочь в этом!

2
ответ дан 6 December 2019 в 15:20
поделиться

Возможно, вам также понадобится указать пользователя? Если нет, возможно, вам больше повезет с экспортом вашего репо и созданием из него tar (локально) для загрузки и развертывания на сервере. Если вы запустите команды svn локально, вы сможете получить запрос на ввод имени пользователя и / или пароля.

0
ответ дан 6 December 2019 в 15:20
поделиться

Мой стандартный ответ для автоматизации интерактивных командных строк - "используйте Expect", но вы используете Python, поэтому я немного уточню его до "используйте Pexpect".

Возможно, потребуется немного подумать, чтобы интегрировать Pexpect в Fabric, или, возможно, вы просто вернетесь к использованию только Pexpect для этого конкретного случая. Но я бы определенно выбрал этот путь.

2
ответ дан 6 December 2019 в 15:20
поделиться
Другие вопросы по тегам:

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