在本地获取远程命令的输出

在本地获取远程命令的输出

假设我有一个具有 ssh 访问权限的远程服务器。在服务器上,有一个命令“cmd_x”,当我执行它时,它将打开一个交互式命令行,我可以在其中编写命令(特定命令)并获得输出。我是否可以远程执行“cmd_x”命令并使用一个命令行获取结果,就像我们在本地获取远程“ls”输出一样:

ssh remote_host "ls > /tmp/file_on_remote_host.txt"

答案1

在命令前使用-t如下命令:

ssh remote_host -t "ls > /tmp/file_on_remote_host.txt"

更多信息请点击此处https://www.mankier.com/1/ssh#-t

答案2

您的问题对于您想将输出保存在哪里有点不清楚 - 您说“本地”,但您的意思是(A)远程系统本地,还是(B)您发出命令的客户端ssh

在任何一种情况下,您都需要选择-t强制打开伪终端。然后,为了能够看到需要响应的假定提示,您需要使用tee来收集输出并在客户端上查看它。

对于(A)(保存在远程系统上): ssh -t remote_host 'cmd_x | tee /tmp/file_on_remote_host.txt'

对于(B)(在本地客户端保存输出): ssh -t remote_host cmd_x | tee /tmp/file_on_local_host.txt

请注意,唯一的区别是命令周围的引号是否在远程主机上发出整个管道。

相关内容