2024-10-05 10:50:05 发布
网友
有没有可能让os.walk()在没有任何第三方库的情况下读取远程Linux服务器的内容
os.walk()
我知道在Windows上,我们可以使用UNC路径,例如:
os.walk(r"\\server\sharename\path\dir")
但是我们如何在Linux上做到这一点呢?(远程Linux服务器受到严格控制,没有安装Samba demon;本地机器也受到严格控制,不允许安装任何第三方库,只有标准的Python 3.8库。)
我们不能在远程机器上直接执行os.walk。但是,我们可以编写类似的函数,不是完全相同的函数,而是在open_sftp、listdir_attr和paramiko的帮助下尽最大努力编写的方法。我试过一个样品
os.walk
open_sftp
listdir_attr
paramiko
import paramiko from stat import S_ISDIR client = paramiko.SSHClient() client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) client.connect('ip_address_remote_machine', username='username', password='password', banner_timeout=60) sftp = client.open_sftp() def sftpwalk(dl): remotepath = dl files = [] folders = [] for f in sftp.listdir_attr(remotepath): if S_ISDIR(f.st_mode): folders.append(f.filename) #print(dl+f.filename) sftpwalk(dl+f.filename+"/") else: # if files.append(f.filename) # print (path,folders,files) print( remotepath,folders,files) dl= '/home/generic/Nizam/' sftpwalk(dl) client.close
这可以转到传递的远程路径,列出所有目录和文件。还可以尝试进一步增强
在Nizam下,我有dir1,dir2,dir3,dir1有dir11,dir12和一些文件
这项研究的结果是:
(u'/home/generic/Nizam/dir2/', [], []) (u'/home/generic/Nizam/dir1/dir12/', [], []) (u'/home/generic/Nizam/dir1/dir11/', [], [u'11.txt']) (u'/home/generic/Nizam/dir1/', [u'dir12', u'dir11'], [u'2.txt', u'1.txt', u'3.txt']) (u'/home/generic/Nizam/dir3/', [], []) ('/home/generic/Nizam/', [u'dir2', u'dir1', u'dir3'], [])
我们不能在远程机器上直接执行
os.walk
。但是,我们可以编写类似的函数,不是完全相同的函数,而是在open_sftp
、listdir_attr
和paramiko
的帮助下尽最大努力编写的方法。我试过一个样品这可以转到传递的远程路径,列出所有目录和文件。还可以尝试进一步增强
在Nizam下,我有dir1,dir2,dir3,dir1有dir11,dir12和一些文件
这项研究的结果是:
相关问题 更多 >
编程相关推荐