duaiziwodexiuluo 2022-07-20 11:04 采纳率: 50%
浏览 308
已结题

win10下建立了SAMBA共享空间,想通过pysmb连接,总是连接失败

win10下建立了SAMBA共享空间,想通过pysmb连接,总是连接失败(windows防火墙已关闭),无法找到原因,求解
问题相关代码,请勿粘贴截图
运行结果及报错内容

import io
import os
import smbclient
from smb.SMBConnection import *
from smb.SMBConnection import SMBConnection

class SMBClient(object):
status = False
samba = None

def __init__(self, user_name, passwd, ip, port=445):
    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
        print("连接成功")
    except:
        self.samba.close()
        print("连接失败")

def disconnect(self):
    if self.status:
        self.samba.close()

def download(self, filenames, local_dir, service_name, smb_dir=''):
    """
    下载文件
    :param filenames: 文件路径(列表)
    :param local_dir: 本地目录
    :param service_name: 服务名(samba服务器中/etc/samba/smb.conf的[]里的名称)
    :param smb_dir: samba服务目录下的文件目录,如果目录下文件路径和filenames完全一致则保留默认值即可
    :return:
    """
    if type(filenames) is not list:
        filenames = [filenames]
    for filename in filenames:
        with open(os.path.join(local_dir, filename), 'w') as f:
            self.samba.retrieveFile(service_name, os.path.join(smb_dir, filename), f)

def upload(self, filenames, local_dir, service_name, smb_dir=''):
    """
    下载文件
    :param filenames: 文件路径(列表)
    :param local_dir: 本地目录
    :param service_name: 服务名(samba服务器中/etc/samba/smb.conf的[]里的名称)
    :param smb_dir: samba服务目录下的文件目录,如果目录下文件路径和filenames完全一致则保留默认值即可
    """
    if type(filenames) is not list:
        filenames = [filenames]
    for filename in filenames:
        with open(os.path.join(local_dir, filename), 'r') as f:
            self.samba.storeFile(service_name, os.path.join(smb_dir, filename), f)

def createDir(self, service_name, path):
    """
    创建文件夹
    :param service_name: 服务名(samba服务器中/etc/samba/smb.conf的[]里的名称)
    :param path: 目录路径
    """
    try:
        self.samba.createDirectory(service_name, path)
    except OperationFailure:
        pass

def listPath(self, service_name, path):
    """
    列举目录下的文件和目录
    :param service_name: 服务名(samba服务器中/etc/samba/smb.conf的[]里的名称)
    :param path: 目录路径
    :return: path目录下的文件和目录
    """
    filenames = []
    for shareFile in self.samba.listPath(service_name, path):
        filename = shareFile.filename
        if filename == '.' or filename == '..':
            continue        # 过滤下
        filenames.append(shareFile.filename)
    return filenames

主程序.

if name == 'main':
"""
smb = smbclient.SambaClient(server='10.2.48.119', share='yuhy1_samba', username='MECH', password=r'shafushu892721') #密码貌似有问题
smb.listdir("/")
print(smb.path)
"""

local_dir = 'D:/test/'
smb_client = SMBClient('HOME_PC', '1234567890', '192.168.1.102', 445)  
smb_client.connect()
个人不觉的是windows配置问题,其他电脑输入IP,账户及密码,可访问,应该是python pysmb库设置问题,可参考上述问题代码是否有错误
  • 写回答

6条回答 默认 最新

  • 脚踏南山 2022-07-20 11:25
    关注

    1、密码貌似有问题,到底有没有问题,不行就删掉share用户,重新设置。
    2、先自己看看是不是专用和公用网络设置的问题,
    3、参考一下链接的内容排查排查一下。
    https://os.51cto.com/article/658846.html

    img

    评论

报告相同问题?

问题事件

  • 系统已结题 7月28日
  • 修改了问题 7月20日
  • 创建了问题 7月20日

悬赏问题

  • ¥30 arduino vector defined in discarded section `.text' of wiring.c.o (symbol from plugin)
  • ¥20 关于#c++#的问题:(2)运算二叉树·表达式一般由一个运算符和两个操作数组成:(相关搜索:二叉树遍历)
  • ¥20 如何训练大模型在复杂因素组成的系统中求得最优解
  • ¥15 关于#r语言#的问题:在进行倾向性评分匹配时,使用“match it"包提示”错误于eval(family$initialize): y值必需满足0 <= y <= 1“请问在进行PSM时
  • ¥45 求17位带符号原码乘法器verilog代码
  • ¥20 PySide6扩展QLable实现Word一样的图片裁剪框
  • ¥15 matlab数据降噪处理,提高数据的可信度,确保峰值信号的不损失?
  • ¥15 怎么看我在bios每次修改的日志
  • ¥15 python+mysql图书管理系统
  • ¥15 Questasim Error: (vcom-13)