python操作samba,pythonsamba,最近在部署完xxl-
python操作samba,pythonsamba,最近在部署完xxl-
最近在部署完xxl-job后,陆续将一些日常性执行的python脚本迁移到上面去;其中部分脚本涉及到对samaba的操作,先后尝试了pysmb、fs.smbfs、pysmbclient
pysmb
安装:sudo pip2 install pysmb
使用
from smb.SMBConnection import *class SMBClient(object): ''' smb连接客户端 ''' user_name = '' passwd = '' ip = '' prot = None status = False samba = None def __init__(self, user_name, passwd, ip, port=139): self.user_name = user_name self.passwd = passwd self.ip = ip self.port = port def connect(self): try: self.samba = SMBConnection(self.user_name, self.passwd, '', '', use_ntlm_v2=True) self.samba.connect(self.ip, self.port) self.status = self.samba.auth_result except: self.samba.close() def disconnect(self): if self.status: self.samba.close() def all_file_names_in_dir(self, service_name, dir_name): ''' 列出文件夹内所有文件名 :param service_name: :param dir_name: :return: ''' f_names = list() for e in self.samba.listPath(service_name, dir_name): if len(e.filename) > 3: f_names.append(e.filename) return f_names def download(self, f_names, service_name, smb_dir, local_dir): ''' 下载文件 :param f_names:文件名 :param service_name:服务名(smb中的文件夹名) :param smb_dir: smb文件夹 :param local_dir: 本地文件夹 :return: ''' assert isinstance(f_names, list) for f_name in f_names: f = open(os.path.join(local_dir, f_name), 'w') self.samba.retrieveFile(service_name, os.path.join(smb_dir, f_name), f) f.close()
优缺点:函数功能丰富,文件下载功能只对普通文件如txt,dat,csv有效,压缩文件无效
fs.smbfs
安装:sudo pip2 install fs.smbfs
使用
import fs.smbfs smb = fs.smbfs.SMBFS(host='****', username='****', passwd='***') smb.opendir('***') for e in smb.listdir(): print e smb.close()
优缺点:host属性中直接输入ip无效,报错fs.errors.CreateFailed: could not get IP/host pair from ‘*.*.*.193‘,包的作者目前也没有解决这个问题。
pysmbclient
安装:sudo pip2 install pysmbclient
使用:
import smbclient smb = smbclient.SambaClient(server='*.*.*.103', username=u'***', password='***', share=u'数据共享/') for e in smb.listdir(u'/'): smb.download(os.path.join(u'/', e), os.path.join('~/smb', e)) smb.close()
优缺点:可以完成普通文件和压缩文件从samba下载到本地
python操作samba
相关内容
- 解决python在import caffe时出现的no module name _caffe问题,
- python操作excel,pythonexcel,python操作ex
- Centos上安装python3.5以上版本,centospython3.5,h3 { color
- 关于Python的import机制原理,pythonimport机制, 很多人用
- python中异常处理,python异常处理,什么是异常?异常是一
- mac python2.7.10 升级到 3.6,python2.7.103.6,第一步: 下载
- python基础二,python基础,#让程序暂停, 等待
- python版本冲突问题,python版本冲突,之前在python3
- python3--内置函数,python3--内置,python3--内
- Python断言assert的用法代码解析,pythonassert
评论关闭