我如何通过 ssh 在一行中将第一台机器上的文件转换为第二台机器上的工具?

我如何通过 ssh 在一行中将第一台机器上的文件转换为第二台机器上的工具?

我在一台 Mint 机器上有一些文件工具,但我不想把它们安装在我的 Mac 笔记本电脑上。主要是因为 apt-get 功能强大,安装失败的风险低。无论如何,我时不时会想使用一些远程工具来处理某个文件。两台机器都可以直接通过 ssh 连接到对方,所以我想肯定有某种脚本或工具可以让我输入一些内容,比如remote [file] [tool & args]将我的文件发送到另一台机器,处理后再取回。

答案1

如果该工具是一个简单的过滤器,那么您可以正常使用它,但通过 ssh。

ssh user@host somefilter < infile > outfile

如果它需要一个文件名,但不需要在它或输出文件中寻找,那么您可以(滥用)使用 bash 来实现这一点。

ssh user@host bash -c "sometool <(/dev/stdin) -o >(/dev/stdout)" < infile > outfile

否则,您将必须将文件传输到另一个系统或从另一个系统传输文件。

答案2

UNIX 的理念是默默地做一件事。然后,您可以基于这些简单的流程构建自己的工具。

你只需要写一个脚本,将文件 scp 到你的机器上,运行 ssh 命令修改它,然后将其拉回来。三行,这是一个非常简单的模板,

scp oldfile [email protected]:/some/directory/file.to.process
ssh [email protected] "/usr/bin/something /some/directory/file.to.process"
scp [email protected]:/some/directory/file.which.is.processed newfile

添加参数并进行一些错误检查就可以了。

或者,正如其他答案所示,您可以将 stdin/stdout 路由到另一台机器,因此对于过滤器来说,它甚至更简单。

答案3

好吧,您可以从文件要处理所在的机器通过 ssh 设置 X11 转发。这一页是一个很好的教程,教你如何做到这一点。它基本上让你从远程服务器运行程序你的计算机(使用您的计算机资源)。

答案4

您还可以尝试将其他系统安装为目录。然后,您就可以像在 Mint 机器上一样正常访问它。sshfs 是执行此操作的一种方法。

mac$ ssh user@mint
mint$ mkdir ~/mac
mint$ sshfs user@mac:/path ~/mac
mint$ tool ~/mac/file

相关内容