Как отловить сбои входа в систему с 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 на стороне клиента, чтобы отключить интерактивные подсказки клавиатуры: