这是我面临的问题。我们正在使用 rsync 将一些文件从我们的服务器备份到远程位置。rysnc 在服务器上作为守护进程运行,我们定期从远程站点拉取文件,其中 rsync 设置为 cron 作业。
最近的一次安全审计显示我们正在使用未经身份验证的 rsync 模块,任何知道模块名称的人都可以下载共享文件。建议使用经过 rsync 身份验证的模块并维护一个秘密文件。
为了使密码在远程站点的传递具有交互性,我使用了一个期望脚本。现在我们面临的问题是,脚本在手动执行时可以正常工作。但是当在 cron 作为作业执行时,rsync 突然退出,我们在服务器端收到以下错误。
“rsync:连接意外关闭 rsync 错误:rsync 协议数据流中的错误(代码 12)”
我尝试了许多在互联网上找到的解决方案,但都是徒劳的。请建议。
此处给出expect 脚本供您参考。
#!/usr/bin/expect -f
spawn /usr/bin/rsync -ruzc *.*.*.*::rsync_module/path/to/dir /tmp/dir --timeout=55
expect {
-re "Password:" {
exp_send "******\r"
}
}
interact