Linux 如何通过ssh/scp直接读取文件

Linux 如何通过ssh/scp直接读取文件,linux,redhat,Linux,Redhat,我有一个用C/C++编写的程序,它读取两个文件,然后生成一些报告。典型的工作流程如下所示: 1> scp user@server01:/temp/file1.txt ~/ then input my password for the prompty 2> my_program file1.txt localfile.txt 有没有一种方法可以让我的程序直接处理远程文件,而无需先将文件显式复制到本地?我尝试了以下命令,但对我无效 > my_program <(ssh u

我有一个用C/C++编写的程序,它读取两个文件,然后生成一些报告。典型的工作流程如下所示:

1> scp user@server01:/temp/file1.txt ~/ then input my password for the prompty

2> my_program file1.txt localfile.txt
有没有一种方法可以让我的程序直接处理远程文件,而无需先将文件显式复制到本地?我尝试了以下命令,但对我无效

> my_program <(ssh user@server01:/temp/file1.txt) localfile.txt

>myu程序您需要使用
sshuser@host“cat/temp/file.txt”


您可以使用它将其重定向到程序的stdin:
sshuser@host“cat/temp/file.txt”| my_程序
,或者您可以使用fork/exec在程序中调用它。或者像您描述的那样生成一个临时文件:
my_程序如果您真的在Red Hat Linux上,这应该可以:

ssh user@host cat /temp/file1.txt | my_program /dev/stdin localfile.txt
使用单个
-
而不是
/dev/stdin
也可以工作,但这取决于
my_程序
是否被编写为将
-
的参数解释为“从stdin读取此文件”


此外,如果
my_program
希望能够在第一个文件中四处搜索(I/O流通常是不可搜索的),那么这可能不起作用,但是如果它所做的一切都是从第一个字节读取到最后一个字节,那么它应该是正常的。

我尝试了这个解决方案,但它不起作用。我的程序只读取localfile.txt,但读取远程文件。在我的示例中,您的程序需要从stdin读取。如果您不指定输入文件,有些会自动执行此操作;如果您指定“-”作为文件名,则会执行此操作。如果您的程序不执行此操作,则需要使用您在问题中建议的临时文件功能,我会调整答案。我的答案主要是使用“cat”。此外,您可能需要使用授权密钥设置无密码ssh,否则您将让您的程序发送您的密码