【发布时间】:2018-04-03 20:36:27
【问题描述】:
我现在有一个奇怪的场景。当我在我们的构建服务器(独立于 SVN 服务器)上发出svn info TXN REPO 命令时,它会按预期工作并将相关信息显示到控制台。
但是,当我使用 Python 编写脚本时,特别是从子进程模块 Popen 时,它会向标准错误(控制台)打印一条消息 svn: E230001: Server SSL certificate untrusted。
我尝试过的:
在脚本调用中使用--non-interactive 和--trust-server-cert 标志。
通过脚本在svn info 调用中传递用户名/密码。
上面两个好像没有生效,吐出和上面一样的错误。但是,从命令提示符手动运行相同的命令会成功,没有问题。我认为这可能与 python 打开到 SVN 服务器的新会话有关,并且该会话不是“受信任的”连接?但我不能确定。
我们的 SVN 服务器在 windows 机器上,版本为 1.8.0
我们的构建服务器是一台运行 Jenkins 2.84 版的 Windows 机器。 Jenkins 执行一个启动 Python 脚本的批处理脚本,执行上述任务。
命令:svn_session = Popen("svn info --non-interactive --trust-server-cert --no-auth-cache -r %s %s" % (TXN, REPOS), stdout=PIPE, stderr=PIPE, shell=True)
** 编辑 **
当我将脚本中的 python 行复制并粘贴到同一服务器上的交互式 python shell 中时,该命令也按预期工作。所以问题在于脚本如何执行命令,而不是命令本身或 Python 如何运行该命令。 **
以前有人遇到过这种情况吗?
【问题讨论】:
标签: python python-2.7 ssl svn