bash:自动输入密码

时间:2012-05-21 10:22:42

标签: bash rsync

我想将一些文件从远程服务器同步到本地系统。因为文件很大,可能会持续几个小时,所以我想把它作为nohup运行:

nohup rsync -r <user>@<remote>:<dir> <local-dir> &

问题是它提示输入远程服务器的密码,但输入密码之后,bash就说了

-bash: mypassword: command not found

我也尝试过--password-file选项,但似乎--password-file不适用于SSH帐户,它适用于rsync服务。

有人可以告诉我如何在保留nohup的同时自动输入密码。

2 个答案:

答案 0 :(得分:2)

您不想为这种用例输入密码。但您可以使用受密码保护的ssh密钥(ssh-keygen -f ~/.ssh/id_rsa_that_key),并使用ssh-add ~/.ssh/id_rsa_that_key将该密码保存在缓存中。事实上,它与程序员无关......

答案 1 :(得分:0)

从联系手册:

  

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

     

警告:在某些系统环境中,所有用户都可以看到变量。在这些系统上,建议使用--password-file。

在我看来,您的错误是因为您将密码分配给变量,并且它被bash脚本解释为命令。

尝试设置上面的环境变量,从bash脚本中删除“mypassword”并再试一次!