我希望将stdin中的文本写入root拥有的文件中。
我通过SSH连接以编程方式执行此操作 - 主要来自脚本 - 因此使用文本编辑器是不可能的。没有终端。该过程完全自动化。
鉴于可以通过sudo
获得[a]根高程,并且可以使用重定向使用cat
写入[b]文件,我假设以下内容可行:
ssh user@host sudo cat >the-file
不幸的是,重定向适用于sudo
,而不是cat
。如何在此示例中将重定向应用于cat
?
答案 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'