最近在部署完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 tcl smb_python操作samba相关推荐

  1. python tcl smb_Python——操作smb文件服务器(上传和下载)

    最近在做上传和下载,然后文件比较大和多,就用到了文件服务器,文件服务器是实体机 ,不是在本地, 然后用python 通过pysmb模块就可以直接进行操作 mac选择前往.连接服务器去查看文件服务器里都 ...

  2. python与excel做数据可视化-Python的Excel操作及数据可视化

    Excel表操作 python操作excel主要用到xlrd和xlwt这两个库,即xlrd是读excel,xlwt是写excel的库. 安装xlrd pip install xlrd 简单的表格读取 ...

  3. csh/python/tcl常用功能

    csh/python/tcl常用功能小总结 Csh 逐行读取并处理文本 if语句及字符串的匹配 Python Python逐行读取文件内容的三种方法 使用while readline 使用for 使用 ...

  4. Python模块MySQLdb操作mysql出现2019错误:Can't initialize character set utf-8

    我使用python的MySQLdb模块实现了一个mysql client, 在测试时,出现了如下错误 Python模块MySQLdb操作mysql出现2019错误:Can't initialize c ...

  5. Python 炫技操作:合并字典的七种方法

    来源 | Python编程时光(ID: Cool-Python) Python 语言里有许多(而且是越来越多)的高级特性,是 Python 发烧友们非常喜欢的.在这些人的眼里,能够写出那些一般开发者看 ...

  6. Python OpenCV像素操作

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自:opencv学堂 Python OpenCV像素操作 环 ...

  7. python列表字典操作_Python 列表(list)、字典(dict)、字符串(string)常用基本操作小结...

    创建列表 sample_list = ['a',1,('a','b')] Python 列表操作 sample_list = ['a','b',0,1,3] 得到列表中的某一个值 value_star ...

  8. python 实现卷积操作

    python实现卷积操作 调用tf.nn.conv2d()实现卷积 自己实现卷积函数 我们知道,tensorflow里面自带卷积函数,tf.nn.conv2d()就可以实现相关功能,本文主要是自己实现 ...

  9. python列表按照指定顺序排序-Python常见排序操作示例【字典、列表、指定元素等】...

    本文实例讲述了Python常见排序操作.分享给大家供大家参考,具体如下: 字典排序 按value排序 d1 = {"name":"python","b ...

最新文章

  1. 高级图像去雾算法的快速实现。
  2. 每日一皮:为什么在生产环境操作要谨慎再谨慎?太形象了!
  3. 关于Django将数据映射到Html中的操作
  4. PMcaff 2015上半年干货精选,不容错过哦~
  5. python基础:try...except...的详细用法
  6. springboot+mybatis多数据源最简解决方案
  7. 第二阶段冲刺(第九天)
  8. 侣信即时通讯系统的技术解析
  9. java之socket的OOBInline和UrgentData和发送心跳包研究
  10. mysql active_GitHub - vipshop/drc: MySQL active-active replication solution.
  11. flask-sqlalchemy CURD
  12. 关于使用SharedObject来缓存游戏图片或者swf文件资源到客户端本地的研究
  13. 超级牛皮的oracle的分析函数over(Partition by...) 及开窗函数
  14. 斐讯 k3 设置 虚拟服务器,斐讯K3无线中继设置教程(无线扩展)
  15. 基于springboot+jsp的服装穿搭信息管理系统
  16. Java实验01 Java编程基础(猜数字游戏、随机点名器)
  17. JAVA面试题|JAVA锁相关面试题总结(一)
  18. 华师大 OJ 3055
  19. discuz安装配置
  20. Linux 下 vi/vim 文本编辑器超详细使用指南(转载)

热门文章

  1. log4net 小记
  2. 在窗体上画图,并响应手标事件的实例
  3. [导入]ASP.NET 配置节架构
  4. 【计算机网络复习 数据链路层】3.1 数据链路层功能概述
  5. 牛客网--蛇形矩阵(Java)
  6. php $handle,laravel $kernel-handle 报错的解决办法_PHP开发框架教程
  7. a76比a73强多少_arm的a73和a72同上10nm,谁强?
  8. python神经网络作用_Python · 神经网络(三*)· 网络
  9. 如何获取投票提交地址_简单实用 | 2019全国医院擂台赛投票攻略(县域版)
  10. Dom4j完整教程~字符串与XML的转换