简介
NAS(Network Attached Storage:网络附属存储),连接在网络上,具备资料存储功能的装置,因此也称为“网络存储器”。它是一种专用数据存储服务器。
NAS设备一般支持多计算机平台,用户通过网络支持协议可进入相同的文档,因而NAS设备无需改造即可用于混合Unix/Windows NT局域网内。
NAS本身能够支持多种协议(如 NFS、 CIFS、 FTP、 HTTP等),而且能够支持各种操作系统。通过任何一台工作站,采用 IE或 Netscape浏览器就可以对NAS设备进行直观方便的管理。
SMB是一个协议名,全称是Server Message Block(服务器消息快协议),用于在计算机间共享文件、打印机、串口等,电脑上的网上邻居由它实现。端口445
- windows
文件共享是指主动地在网络上共享自己的计算机文件。一般文件共享使用P2P模式,文件本身存在用户本人的个人电脑上。大多数参加文件共享的人也同时下载其他用户提供的共享文件。有时这两个行动是连在一起的。在很早期的windows中(windows2000以下),文件共享服务是利用TCP的139端口实现的,服务名是SMB。后来,微软又把SMB改名为CIFS协议,并且使用的是TCP的445端口
py第三方库
- pysmb包下载
1 2 3
| pip install pysmb
pip3 install pysmb
|
共享文件挂载
1
| net use k: \\10.96.10.59\c$
|
- 常用命令
1 2 3 4
| net share ipc$ /delete 关闭ipc默认共享 •net share admin$ /delete 关闭admin账户目录共享 •net share c$ /delete 关闭c盘默认共享 •net share d$ /delete 关闭d盘默认共享
|
案例
smb服务配置
1 2 3 4 5 6 7
| from smb.SMBConnection import SMBConnection host="xxx.xxx.xxx.xxx" username="xxxxxx" password="xxxxxx" conn=SMBConnection(username,password,"","",use_ntlm_v2 = True) result = conn.connect(host, 445) print("登录成功")
|
smb服务连接与文件上传下载
- 上传
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| localFile=open("本地文件路径","rb")
conn.storeFile("共享文件夹名称","存放路径",localFile)
localFile.close()
print("上传成功")
|
- 下载
1 2 3 4 5 6 7 8 9 10 11
| localFile=open("下载后的文件路径","wb")
conn.retrieveFile("共享文件夹名称","文件所在路径",localFile)
localFile.close()
print("下载成功")
|
示例如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| host = "2.2.2.2" username = "root" password = "123134" my_name = "" remote_name = ""
@logger.catch def download_file_smb_server(tad4_mf4_path): """
:param tad4_mf4_path: :return: """ root_path = r"C:\Users\Administrator\Desktop\t\demo\test\mdf" (file_path, file_name) = os.path.split(tad4_mf4_path) if os.path.exists(root_path + "\\" + file_name): logger.warning("file exists , skip download file") return root_path + "\\" + file_name else: conn = SMBConnection(username, password, my_name, remote_name, is_direct_tcp=True) result = conn.connect(host, 445) logger.success("login ntfs smb server success !", result) logger.info(" download file .") with open(root_path + "\\" + file_name, 'wb') as fw: conn.retrieveFile("shared", tad4_mf4_path, fw) return root_path + "\\" + file_name
|