如何使用sudo输出重定向?

时间:2016-08-21 22:50:08

标签: linux bash shell sudo file-access

我希望将stdin中的文本写入root拥有的文件中。

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

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

ssh user@host sudo cat >the-file

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

1 个答案:

答案 0 :(得分:2)

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

ssh user@host 'cat | sudo tee the-file'

tee将输出重定向到文件,可以使用sudo运行。

如果您想模仿附加文件的>>,请使用sudo tee -a

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

修改

tee命令is part of POSIX,因此您可以依赖它。

还要重定向标准错误:

ssh user@host 'some_command 2>&1 | sudo tee output-file'