1 安装samba服务器
sudo apt-get install samba samba-common
2 创建一个用于分享的samba目录
sudo mkdir /home/koukou/worspace
3 给创建的这个目录设置权限
sudo chmod 777 /home/koukou/worspace
4添加用户
sudo smbpasswd -a 用户名
此处可以新创建一个用户,将smb挂在到一个新的用户下
5配置samba的配置文件。
sudo nano /etc/samba/smb.conf
在配置文件smb.conf的最后添加下面的内容:
[share] #名称
comment = share folder
browseable = yes
path = /home/koukou/worspace
create mask = 0700
directory mask = 0700
valid users = 用户名
force user = 用户名
force group = 用户名
public = yes
available = yes
writable = yes
6 重启samba服务器。
6 重启samba服务器。
sudo service smbd restart
8 代码
#!/usr/bin/env python3
# -*- coding:utf-8 -*-
import os
from smb.SMBConnection import SMBConnection
#pip install pysmb
class SambaClient(object):
def __init__(self, user_name, passwd, ip, port=139):
self.user_name = user_name
self.passwd = passwd
self.ip = ip
self.port = port
def __del__(self):
self.samba.close()
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: (会返回一些.的文件,需要过滤)
if e.filename[0] != '.':
f_names.append(e.filename)
print(f_names)
return f_names
def download(self, f_name, service_name, smb_dir, local_dir):
'''
下载文件
:param f_name:文件名
:param service_name:服务名(smb中的文件夹名
:param smb_dir: smb文件夹
:param local_dir: 本地文件夹
:return:
'''
with open(os.path.join(local_dir, f_name), 'wb') as tmp_file:
self.samba.retrieveFile(service_name, os.path.join(smb_dir, f_name), tmp_file)
if __name__ == '__main__':
smb_cli = SambaClient("ts","123","192.168.72.98")
smb_cli.connect()
# smb_cli.all_file_names_in_dir("project_samba",
smb_cli.download("xxxx.rar",
"share",
"/test",
"/home/ts/test_11/test")
smb_cli.disconnect()