目标设备上的 sudo rsync

sudo rsync on target devices

早上好,

我目前遇到一个问题,我无法在 Whosebug 或 google 搜索中找到答案,而且我还没有解决。

我正在尝试在目标设备上以 sudo 用户身份使用 rsync。

问题:

我尝试过的:

rsync -a --rsync-path "sudo rsync" USER@HOST:/root/FILE ./

Issue: "A terminal is required to read password"

好的,让我们尝试通过标准输入传递它

rsync -a --rsync-path "echo 'PASSWORD' | sudo -S rsync" USER@HOST:/root/FILE ./

rsync: connection unexpectedly closed (0 bytes received so far) [sender]

Issue: rsync error: error in rsync protocol data stream (code 12) at io.c(226) [sender=3.1.3]

rsync: connection unexpectedly closed (4 bytes received so far) [receiver]

rsync error: error in rsync protocol data stream (code 12) at /BuildRoot/Library/Caches/com.apple.xbs/Sources/rsync/rsync-52.200.1/rsync/io.c(453) [receiver=2.6.9]

你们对我能做的事情还有其他想法吗?

我知道回显密码不是最佳做法,但是在我连接的服务器没有与 root 用户进行密钥交换并且我无法更改 SUDOPASS 的情况下,我没有很多其他选择设置。

最后这一切都被插入到一个 Python 脚本中,所以如果有更好的 pythonic 方法使用 rsync 作为 sudoer,请告诉我。

如果你的远程 sudo 配置为一旦输入密码,一段时间内不需要再次输入,那么你可以试试这个:

rsync -a --rsync-path "echo 'PASSWORD' | sudo -S date >&/dev/null; sudo rsync" \
  USER@HOST:/root/FILE ./

要在远程添加 --debug=CMD2 上调试正在执行的命令 运行。 如果您的遥控器不理解 bash 语法 >&/dev/null,请使用更长的 >/dev/null 2>/dev/null.