如何通过 ssh 将远程机器的命令输出重定向到本地文件?

如何通过 ssh 将远程机器的命令输出重定向到本地文件?

示例:我通过 ssh 登录我的笔记本电脑(Ubuntu 14.04),我需要制作一些命令输出的 .log 文件,然后将其传输到我的台式机。该命令有将-o输出重定向到文件的选项。然后我可以使用命令复制文件scp

问题是:是否可以将输出直接重定向到我的机器,而无需先在笔记本电脑上创建文件,然后再传输它scp

两台机器都使用 Ubuntu 14。

答案1

根据您的命令,您可以执行如下操作:

ssh user@machine command > log

日志会保存在你的机器里,真实的例子:

ssh [email protected] ls > log

如果您的命令不支持输出,则按stdout如下方式运行:

ssh [email protected] "command -o output; cat output"  > log

答案2

如果您想同时查看输入的内容和输出内容 - 请尝试:

ssh user@host 2>&1 | tee ssh-session.log

答案3

我有一个类似的要求,只是我需要能够在登录并设置后“打开”到本地管道/进程的输出。我不希望所有登录文本都放入本地文件/管道中。

基本上,我需要从远程机器执行 ngrep,并将输出通过管道传输到本地测试脚本,该脚本检查网络流量中的某些内容。此外,当测试运行时,我不想混合输出,如果我使用 tee 就会发生这种情况。我会看到 ngrep 的输出,加上测试的输出,这会令人困惑。此外,直接重定向到文件 > 文件名意味着登录过程将全部重定向到该文件,我将无法看到发生了什么。

这是一个演示,因此观众必须清楚发生了什么。

ssh yo@remote_box.
sudo ngrep | local_application

Bzzzzt!!!错了!这样不行

如果 ngrep 不需要 sudo,这不会是个问题。我真的无法 chmod a+s ngrep,否则 devops 会对我的情况造成严重影响。

相关内容