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

时间:2014-12-15 19:19:01

标签: 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 user@server01:/temp/file1.txt) localfile.txt

2 个答案:

答案 0 :(得分:8)

您需要使用ssh user@host "cat /temp/file.txt"

您可以使用它将其重定向到程序的stdin:ssh user@host "cat /temp/file.txt" | my_program或者您可以使用fork / exec在程序中实际调用它。或者就像你描述的那样生成一个临时文件:my_program <(ssh user@host "cat /temp/file.txt")

其他选项是在程序中使用带保险丝的sshfs或使用ssh(或VFS)库。

答案 1 :(得分:2)

如果你真的在Red Hat Linux上,这应该可行:

ssh user@host cat /temp/file1.txt | my_program /dev/stdin localfile.txt

使用单个-代替/dev/stdin也可以正常工作,但这取决于是否编写了my_program来解释-的参数为&#34 ;从stdin&#34;。

中读取此文件

此外,如果my_program期望能够在第一个文件中寻找(I / O流通常是不可搜索的),这可能不起作用,但如果它只是从第一个字节读取到最后一个字节,应该没问题。