如何通过 sudo 使用输出重定向?

Sod*_*hty 3 linux bash shell sudo file-access

我希望将文本从标准输入写入 root 拥有的文件。

我通过 SSH 连接以编程方式执行此操作 - 本质上是通过脚本 - 因此使用文本编辑器是不可能的。没有终端。该过程完全自动化。

鉴于可以通过 获取 [a] 根标高sudo,并且可以使用cat重定向来写入 [b] 文件,我假设以下内容可行:

ssh user@host sudo cat >the-file
Run Code Online (Sandbox Code Playgroud)

不幸的是,重定向应用于sudo,而不是cat。在此示例中如何应用重定向cat

Wil*_*ill 6

执行此操作的正常模式是:

ssh user@host 'cat | sudo tee the-file'
Run Code Online (Sandbox Code Playgroud)

tee将输出重定向到文件并可以使用sudo.

如果您想模拟>>文件附加到的位置,请使用sudo tee -a.

您还需要确保引用上面的命令,以便本地 shell 不会解释该管道。

编辑

tee命令是 POSIX 的一部分,因此您可以依赖它的现有命令。

还要重定向标准错误:

ssh user@host 'some_command 2>&1 | sudo tee output-file'
Run Code Online (Sandbox Code Playgroud)