我正在运行一个使用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)
的用途。如果是这样,请告诉我一些其他方法来摆脱要求密码的提示。
由于
答案 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