在命令中提供服务器的密码?

时间:2012-11-22 10:06:58

标签: django rsync

是否可以在rsync命令中提供服务器密码?

rsync -zvr source destination password

我正在使用rsync协议在Django中开发一个Web应用程序。我使用表单从用户输入密码。我想在rsync命令本身中使用这样的密码?我该怎么做?我确信有一种方法可以使用stdin,pipe或类似的东西。谢谢

1 个答案:

答案 0 :(得分:0)

来自man rsync

  

远程守护程序上的某些模块可能需要身份验证。如果是这样,您将在连接时收到密码提示。您可以通过将环境变量RSYNC_PASSWORD设置为要使用的密码或使用--password-file选项来避免密码提示。在编写rsync脚本时,这可能很有用。

关于--password-file

  

此选项允许您在文件中提供用于访问远程rsync守护程序的密码。请注意,此选项仅在使用内置传输访问rsync守护程序时有用,而不是在使用远程shell作为传输时。该文件不能是世界可读的。它应该只包含密码作为一行。

因此,要么在调用RSYNC_PASSWORD之前设置rsync环境变量,要么使用临时文件并将其传递给命令;第一个选项可能更容易,使用env

env RSYNC_PASSWORD=PASSWORD rsync -zvr source destination

更新:请注意--password-file下的这个小块:

  

请注意,此选项仅在使用内置传输访问rsync守护程序时有用,时使用远程shell作为传输。

如果您没有使用rsync内置传输,但可能使用SSH,则无法使用此方法“自动”进行身份验证。如果您使用的是SSH,则应使用公钥/私钥,或者使用ASK_SSHPASS技巧(参见this)。