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