即使在代码中指定了密码,Fabric也会在提示符处要求输入密码

时间:2017-05-19 10:37:49

标签: python python-2.7 fabric

我正在运行一个使用fabric Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\DB_Users.mdf;Integrated Security=True 函数连接到远程计算机并将文件传输到它的小代码。我已为rsync_project分配了服务器的密码。

但是,当我运行代码时,系统会提示输入密码。输入密码后,文件将被传输。但我不想得到提示。

这是我的代码:

env.password

也许我误解了from fabric import environment from fabric.contrib.project import rsync_project env.hosts = ['172.16.154.134'] env.password = 'user@123' def sync(remote_dir, local_dir): rsync_project(remote_dir, local_dir) 的用途。如果是这样,请告诉我一些其他方法来摆脱要求密码的提示。

由于

1 个答案:

答案 0 :(得分:1)

这是一种常见的误解。在代码中设置env后,应使用execute调用您调用的任何函数。

from fabric.state import env
from fabric.decorators import task
from fabric.api import execute
from fabric.contrib.project import rsync_project

env.hosts = ['172.16.154.134']
env.password = 'user@123'

def internal_sync(remote_dir, local_dir):
    rsync_project(remote_dir, local_dir)

# use task to define the external endpoint for the fab command line
@task
def sync(remote_dir, local_dir):
    """Does an rsync from remote_dir => local_dir"""
    # above docstring for `fab --list`
    # call `internal_sync` using the env
    # parameters we set in code
    execute(internal_sync, remote_dir, local_dir)

从命令行:

fab sync:/path/to/remote,/path/to/local