PYTHON(3)用账号密码登录windows共享文件夹

在工作的时候遇到需要通过账号密码访问window平台的samba文件的情况,因为服务器没有开放权限给everyone,头疼。
百度,stackoverflow基本找不到解决方法,或者字太多,哈哈哈。
最后只好深挖范例

按步骤来说,确认你的共享文件的共享路径,以及账号密码,还有权限是否正确打开。

比如下图


image.png
那么,在python中,server_name就是你的共享路径的aria2。
初始化
user_name = 'USERNAME'
    passwd = 'PASSWD'
    ip = '192.168.2.XXX'
    service_name='aria2'
    dir_name='test'
#test是aria2下面的一个子文件夹
    sb=SMBClient(user_name,passwd,ip)#个人封装的一个类,原理一样
    sb.connect()
    print(sb.status)
    print(sb.samba.listShares())
class SMBClient(object):
    '''
    smb连接客户端
    '''
    def __init__(self, fname,port=445):
          # user_name = 'pc01'
          # passwd = '123'
          # ip = '192.168.1.XX'
        port = None
        status = False
        samba = None
        print('connecting server %s on %s %s'%(ip,service_name,dir_name))
    def connect(self):
        try:
             # user_name = 'pc01'
             # passwd = '123'
             # ip = '192.168.1.XX'
            self.samba = SMBConnection(username, passwd, ip, domain='HOMES',use_ntlm_v2=True,is_direct_tcp=True,remote_name='00')
            self.samba.connect(ip, port)
            self.status = self.samba.auth_result#连接状态
            print('success login server %s'%self.status)
        except Exception as e:
            print('fail to login server',e)
            self.samba.close()

上传一个文件
    f=open('E:\\Doc1.docx' ,'rb')
    sb.samba.storeFile('aria2','test/tt.doc',f)
    f.close()
打开文件
#如果有开启guest查看权限,就不用经过smb类了,太辛苦直接open吧
  with open(remote_file_path, 'rb') as f:
                temp = f.read()

如果发现共享权限已经开了修改,但是任然报错 unable to open file
并且系统是windows系统,可以查看一下本地权限是否也开了。

如果执行下来没有报错,那么就恭喜成功了。

删除操作
sb.samba.deleteFiles(service_name, ‘test/tt.doc')#delete share file
移动或者重命名
#dir_name是我的一个子文件夹,可以删掉
self.samba.rename
(self.service_name, 
os.path.join(self.dir_name,self.fname),
os.path.join(self.dir_name+'/'+new_path,'1111111'+self.fname), 
timeout=30)

查了半天官方手册总算搞定了。

附录:关于获取到的文件或文件夹信息,这个obj所包含的属性的用途


image.png

你可能感兴趣的:(PYTHON(3)用账号密码登录windows共享文件夹)