Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在shell或Python中使用SFTP递归获取文件列表,无需额外的库_Python_Linux_Shell_Sftp - Fatal编程技术网

在shell或Python中使用SFTP递归获取文件列表,无需额外的库

在shell或Python中使用SFTP递归获取文件列表,无需额外的库,python,linux,shell,sftp,Python,Linux,Shell,Sftp,我使用python的子流程模块通过SFTP在两台服务器之间传输文件。我可以连接到远程服务器的唯一方法是通过SFTP连接 我需要验证本地和远程服务器上的两个目录在传输后是否相同。这在本地服务器上非常容易,一个基本的find命令提供了我所需要的。但是,我不知道如何在远程服务器上获得类似的结果 下面是一个文件结构的示例,它在两台机器上都是相同的 作业目录 工作1 test.txt tonks.txt 工作2 野生动物.txt 工作3 jackinthebox.txt happygilmore.txt

我使用python的子流程模块通过SFTP在两台服务器之间传输文件。我可以连接到远程服务器的唯一方法是通过SFTP连接

我需要验证本地和远程服务器上的两个目录在传输后是否相同。这在本地服务器上非常容易,一个基本的find命令提供了我所需要的。但是,我不知道如何在远程服务器上获得类似的结果

下面是一个文件结构的示例,它在两台机器上都是相同的

作业目录 工作1 test.txt tonks.txt 工作2 野生动物.txt 工作3 jackinthebox.txt happygilmore.txt sadprogrammer.txt 因此,我需要一个命令,该命令将从
Job1
Job2
Job3
获取文件名并将它们返回给我

差不多

echo "ls *.txt" | sftp -q user@host.example.com:/path
在这里跟踪不太好,因为它需要一个特定的路径。我可以获取目录中的文件夹列表,并对每个文件夹运行
sftp
命令,但这需要很多远程连接


我唯一可以使用的远程访问工具是subprocess和Python的OS模块。类似Paramiko SFTP的东西不可用

有关简单但效率低下的解决方案,请参见@pasabaporaqui to的答案


考虑到您的模糊限制,使用一个连接的唯一解决方案是:

  • 在Python中打开
    sftp
    子进程
  • ls
    命令的序列馈送给它,每个目录一个
  • 解析标准输出中的目录列表,为找到的每个子目录生成更多的
    ls
    命令

@MartinPrikryl,这个答案并不符合我的要求。第一个将为每个目录打开一个SFTP连接,并用bash编写,第二个使用一个我无权访问的工具。谁删除了这里的其他评论/帖子?它们很有用,我正在调查他们对删除评论的建议,并回答:一旦他们意识到自己错了,所有这些评论都被各自的所有者删除了所以不,它们绝对没有用。