Как отловить сбои входа в систему с PySVN?

Я новичок в Python и PySVN в целом, и я пытаюсь экспортировать мой SVN-репозиторий, используя pysvn. Вот мой код:

#set up svn login data  
def svn_credentials (realm, username, may_save):  
  return True, svn_login_name, svn_login_password, False

#establish connection  
svn_client = pysvn.Client ()  
svn_client.callback_get_login = svn_credentials

#export data  
svn_client.export('server-path-goes-here', 'client-path-goes-here', force=True)

Что работает нормально, но если пароль неправильный или имя пользователя неизвестно, этот код просто сидит. Я полагаю, что он представлен с приглашением пользователя войти в систему на стороне SVN, но я не знаю, как проверить, что происходит с callback_get_login. Любая помощь будет принята с благодарностью.

2 ответа

Если учетные данные неверны, pysvn будет вызывать обратный вызов, если учетные данные все еще не верны, он будет вызывать его снова и снова, и будет продолжать делать это, пока учетные данные не будут правильными.

Для автоматизированного сценария вам, вероятно, лучше не устанавливать обратный вызов, а вместо этого задавать имя пользователя и пароль по умолчанию, вызывая set_default_username и set_default_password в экземпляре pysvn.Client.

При такой настройке неверные учетные данные приведут к тому, что pysvn распространит исключение, предлагающее установить обратный вызов, который вы можете перехватить и превратить в значимое сообщение об ошибке.

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

http://www.ssh.com/support/documentation/online/ssh/adminguide/32/Configuring_the_Server_and_Client.html

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