gpt4 book ai didi

python - 目标设备上的 sudo rsync

转载 作者:行者123 更新时间:2023-12-01 06:28:42 25 4
gpt4 key购买 nike

早上好,

我目前遇到一个问题,在 StackOverflow 或 Google 搜索中找不到答案,而且我尚未解决。

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

问题:

  • 我不拥有目标设备,因此无法更改 ssh/sudo 权限。

  • 我没有 root 用户的凭据

  • 我确实有 sudo 用户的凭据

  • 交易必须以编程方式完成(最少的用户输入)

我尝试过的:

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

Issue: "A terminal is required to read password"

好的,让我们尝试通过 stdin 传递它

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 用户进行 key 交换,并且我无法更改 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。如果您的 Remote 不理解 bash 语法 >&/dev/null,请使用较长的 >/dev/null 2>/dev/null

关于python - 目标设备上的 sudo rsync,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60007382/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com