代码之家  ›  专栏  ›  技术社区  ›  hyperboreean

结构和SVN密码

  •  7
  • hyperboreean  · 技术社区  · 15 年前

    假设我不能用织物做这样的事情:

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

    如何正确传递远程交互命令行的密码?

    问题是repo是以svn+ssh签出的,我没有http/https/svn选项

    6 回复  |  直到 12 年前
        1
  •  7
  •   Alex Dupuy Shayan    12 年前

    试试SSHkey。它允许您在没有密码的情况下连接到服务器。 在这种情况下,必须在远程服务器和repo之间设置sshkey。

    在远程服务器上:生成密钥对

     $ ssh-keygen -t dsa
    

    把护照空着! 这将生成2个文件

    • ~/.ssh/id_dsa(私钥)
    • ~/.ssh/id_dsa.pub(公钥)

    然后,将id_dsa.pub中的内容附加到repo服务器上的~/.ssh/authorized_密钥。

    您的远程服务器将能够在不需要任何密码的情况下更新源树。

        2
  •  3
  •   Luka ZakrajÅ¡ek    14 年前

    如果您只想在日志中隐藏密码,可以使用以下方法:

    from fabric.state import output
    
    def xrun(command, hidden='', *args, **kwargs):
        old_state = output.running
        output.running = False
        print '[%s] run: %s' % (env.host_string, command)
        run(command + hidden, *args, **kwargs)
        output.running = command
    
    xrun('svn update', '--password "your password"')
    
        3
  •  2
  •   mac    15 年前

    不久前我们遇到了类似的问题,实际上我们为fabric提出了一个新功能,但是我们采访的开发人员却提出了这个建议。

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

    当fabric运行此命令时,这将提示您输入密码。

    不过,我相信这会在fabric日志中显示您的密码,所以更好的选择是让svn提示您输入密码并将密码回送到其中。

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

    不过,我不使用SVN,所以恐怕我不确定这是否可能。我希望有人能帮忙!

        4
  •  2
  •   Zac Thompson    15 年前

    我对自动化交互命令行的标准答案是“使用expect”,但您使用的是python,因此我将稍微改进它为“使用 Pexpect “。

    将pexpect集成到fabric中可能需要一些考虑,或者您可能只会在这个特定的情况下返回到pexpect。但这绝对是我要走的路。

        5
  •  0
  •   Alex Jillard    15 年前

    你可能也需要提供给用户?如果不是,您可能会有更好的运气导出您的回购,并使它的tar(本地)上传+部署在服务器上。如果在本地运行svn命令,系统将提示您输入用户名和/或密码。

        6
  •  0
  •   mpeterson    15 年前

    你应该看看 Fabric's env documentation . 有人说你应该做这样的东西:

    from fabric.api import env
    
    env.user = 'your_user'
    env.password = 'your_password'
    

    希望有帮助!