在脚本中使用wait

时间:2010-11-26 07:42:52

标签: shell rsync expect password-prompt

在下面的expect脚本中,我注意到脚本将在提示输入密码之前发送密码。如何防止这种情况?我可以使用等待声明吗?

#!/usr/bin/expect -f
#set timeout 25
spawn rsync root@14.12.123.82:'/usr/backups /usr/backup-scripts /root/test/' /root/
expect "root@14.12.123.82's password: $"
send "\$xxxxxx\n"
expect "\\$ $

1 个答案:

答案 0 :(得分:0)

您甚至不需要使用expect来执行此任务。根据{{​​3}},rsync支持直接从文件中读取密码的选项:

rsync --password-file=file_that_password_is_in root@14.12.123.82:'/usr/backups /usr/backup-scripts /root/test/' /root/

或使用环境变量:

export RSYNC_PASSWORD=secret
rsync root@14.12.123.82:'/usr/backups /usr/backup-scripts /root/test/' /root/