为了账号安全,请及时绑定邮箱和手机立即绑定

检查python3中是否存在samba目录

检查python3中是否存在samba目录

芜湖不芜 2022-01-05 13:28:40
我有一个 samba 目录 smb://172.16.0.10/public_pictures/,我想知道它是否可以访问。尝试类似以下内容:import urllibif open("smb://172.16.0.10/public_pictures/"):    print("accessible")else:    print("no accessible")但显然它对我不起作用
查看完整描述

2 回答

?
一只斗牛犬

TA贡献1784条经验 获得超2个赞

使用 pysmb (文档):


from smb.SMBConnection import SMBConnection


remote_address = "172.16.0.10"

share_name = "public_pictures"


conn = SMBConnection(username, password, name, remote_name)

conn.connect(remote_address)


accessible = share_name in conn.listShares()


查看完整回答
反对 回复 2022-01-05
?
吃鸡游戏

TA贡献1829条经验 获得超7个赞

处理 samba 的一种方法是使用pysmb. 如果是这样,那么它会类似于以下内容:


# we need to provide localhost name to samba

hostname = socket.gethostname()

local_host = (hostname.split('.')[0] if hostname 

              else "SMB{:d}".format(os.getpid()))


# make a connection

cn = SMBConnection(

    <username>, <password>, local_host, <netbios_server_name>,

    domain=<domain>, use_ntlm_v2=<use_ntlm_v2>, 

    is_direct_tcp=<self.is_direct_tcp>)


# connect

if not cn.connect(<remote_host>, <remote_port>):

    raise IOError


# working connection ... to check if a directory exists, ask for its attrs

attrs = cn.getAttributes(<shared_folder_name>, <path>, timeout=30)

一些注意事项:

  • 在你上面的例子中,public_picturesshared folder, whilepath只是/

  • 您需要知道您是否在端口139445(或自定义端口)上使用 SMB 。如果是后者,您通常希望通过is_direct_tcp=True(尽管某些服务器仍会在 上提供 NetBIOS samba 445

  • 如果您希望不需要用户名或密码,那么您可能希望username="guest"使用空密码进行连接。


查看完整回答
反对 回复 2022-01-05
  • 2 回答
  • 0 关注
  • 290 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信