python - 目标设备上的 sudo rsync
问题描述
早上好,
我目前有一个问题,我在 StackOverflow 或谷歌搜索上找不到答案,我还没有解决。
我正在尝试将 rsync 用作目标设备上的 sudo 用户。
问题:
我不拥有目标设备,因此无法更改 ssh/sudo 权限。
我没有 root 用户的凭据
我确实有 sudo 用户的凭据
事务必须以编程方式完成(最少的用户输入)
我试过的:
rsync -a --rsync-path "sudo rsync" USER@HOST:/root/FILE ./
问题:“需要终端才能读取密码”
好的,让我们尝试通过标准输入传递它
rsync -a --rsync-path "echo 'PASSWORD' | sudo -S rsync" USER@HOST:/root/FILE ./
rsync:连接意外关闭(到目前为止收到 0 个字节)[发件人]
问题:rsync 错误:在 io.c(226) [sender=3.1.3] 的 rsync 协议数据流(代码 12)中出错
rsync:连接意外关闭(到目前为止已收到 4 个字节)[接收者]
rsync 错误:/BuildRoot/Library/Caches/com.apple.xbs/Sources/rsync/rsync-52.200.1/rsync/io.c(453) [receiver=2.6] 处的 rsync 协议数据流(代码 12)中的错误。 9]
你们对我可以做什么还有其他想法吗?
我知道回显密码不是最佳做法,但是在我连接的服务器没有与 root 用户进行密钥交换并且我无法更改 SUDOPASS 设置的情况下,我没有很多其他选项。
最后,这一切都被插入到 Python 脚本中,所以如果有更好的 Python 方式将 rsync 用作 sudoer,请通知我。
解决方案
如果你的远程 sudo 被配置为一旦你给了密码,你就不需要再给它一段时间了,那么你可以试试这个:
rsync -a --rsync-path "echo 'PASSWORD' | sudo -S date >&/dev/null; sudo rsync" \
USER@HOST:/root/FILE ./
调试远程 add 上正在运行的命令--debug=CMD2
。如果您的遥控器不理解 bash 语法>&/dev/null
,请使用较长的>/dev/null 2>/dev/null
.
推荐阅读
- java - maven surefire 插件 - 按顺序运行所有测试
- android - 在android中的单个视图中显示一组值
- java - 更改主题并重新创建活动时,PreferenceFragmentCompat 不会更改颜色
- ruby-on-rails - 未初始化的常量 Google::Cloud::Vision::ImageAnnotator
- python - 熊猫改变列的顺序
- python - 在python中将十六进制字符串转换为十六进制数字
- javascript - 如何在 Promise 中使用 async/await - Vue
- c# - MPXJ C# - 资源分配计数
- nativescript - Nativescript - 在 textView 中居中水平文本、动态文本和多行
- c - sqlite3_bind_text、sqlite3_bind_text16 和 sqlite3_bind_text64 有什么区别?