pysmb OperationFailure, service | 您所在的位置:网站首页 › smb是什么东西 › pysmb OperationFailure, service |
使用到pysmb库,就不可避免地被要求提供service_name listPath()、retrieveFile()、storeFile()…… 拿listPath()函数来说,凭直觉尝试一下: listPath('server', 'shared_folder') listPath('\\\\server', '\\shared_folder') listPath('\\\\server\\shared_folder', '\\')都以报错告终……(因为这里不会涉及server。) 函数说明看来不能轻易蒙混过关了,还是认真啃函数说明吧: service_name – the name of the shared folder for the *path* path – path relative to the *service_name* where we are interested to learn about its files/sub-folders. 直译中文是:service_name是*path*的共享文件夹的名字,而path是需要读取的文件夹,是个相对路径。 共享文件夹的名字? 难道是这样:listPath('shared_folder', '\\shared_folder') ? 很遗憾,还是不对。 不过,这已经接近答案了。 主要的问题是,path是一个相对路径,相对shared folder的路径,应该是shared folder的下级路径。 所以正确的理解应该是:service_name就是共享文件夹名称,而path则是共享文件夹的相对路径(本身或下级)。 因此,listPath('shared_folder', '\\')或者listPath('shared_folder', ''),又或者listPath('shared_folder', 'sub_folder')都是OK的。 示例: from smb.SMBConnection import SMBConnection host = '192.168.0.1' # 远程服务器IP username = 'administrator' # 远程服务器用户 password = 'Mon'sWork' my_name = 'Omega-PC' # 本机机器名 remote_name = 'M-86' # 远程服务器机器名 conn = SMBConnection(username, password, my_name, remote_name) conn.connect(host, 139) # 也有可能是445 # 列出共享文件夹SoftWare下的文件名、创建时间 for i in conn.listPath('SoftWare', '\\'): print(i.filename, i.create_time) service_name到底是什么东西?广泛读了网上很多资料,service_name其实是相对于发布共享的机器而言的, 在发布共享机器上的命令行窗口运行net share,列示出来的共享名,都可以作为该参数的值(资源列不为空的部分)。
|
CopyRight 2018-2019 实验室设备网 版权所有 |