假设我有一个具有 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
请注意,唯一的区别是命令周围的引号是否在远程主机上发出整个管道。