Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
检查python3中是否存在samba目录_Python_Python 3.x_Samba_Smb_Pysmb - Fatal编程技术网

检查python3中是否存在samba目录

检查python3中是否存在samba目录,python,python-3.x,samba,smb,pysmb,Python,Python 3.x,Samba,Smb,Pysmb,我有一个samba目录smb://172.16.0.10/public_pictures/ 我想知道它是否可以访问 请尝试以下操作: import urllib if open("smb://172.16.0.10/public_pictures/"): print("accessible") else: print("no accessible") # we need to provide localhost name to samba hostname = socket.

我有一个samba目录smb://172.16.0.10/public_pictures/ 我想知道它是否可以访问

请尝试以下操作:

import urllib

if open("smb://172.16.0.10/public_pictures/"):
    print("accessible")
else:
    print("no accessible")
# 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)
但显然,使用pysmb()对我不起作用:

使用pysmb():


处理samba的一种方法是使用。如果是这样的话,那么它是这样的:

import urllib

if open("smb://172.16.0.10/public_pictures/"):
    print("accessible")
else:
    print("no accessible")
# 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)
#我们需要为samba提供本地主机名
hostname=socket.gethostname()
本地_主机=(hostname.split('.')[0]如果主机名为
else“SMB{:d}”.format(os.getpid())
#接通
cn=SMB连接(
,本地主机,
域=,使用\u ntlm\u v2=,
is_direct_tcp=)
#连接
如果不是cn.connect(,):
引发IOError
#工作连接。。。要检查目录是否存在,请询问其属性
attrs=cn.getAttributes(,超时=30)
一些注意事项:

  • 在上面的示例中,
    public\u pictures
    共享文件夹
    ,而
    路径
    则只是
    /

  • 您需要知道是否在端口
    139
    445
    (或自定义端口)上使用SMB。如果您通常希望传递的是后者,那么它是\u direct\u tcp=True(尽管有些服务器仍然在
    445
    上提供NetBIOS samba)

  • 如果您希望不需要用户名或密码,那么您可能希望使用空密码作为
    username=“guest”
    连接


  • 处理samba的一种方法是使用。如果是这样的话,那么它是这样的:

    import urllib
    
    if open("smb://172.16.0.10/public_pictures/"):
        print("accessible")
    else:
        print("no accessible")
    
    # 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)
    
    #我们需要为samba提供本地主机名
    hostname=socket.gethostname()
    本地_主机=(hostname.split('.')[0]如果主机名为
    else“SMB{:d}”.format(os.getpid())
    #接通
    cn=SMB连接(
    ,本地主机,
    域=,使用\u ntlm\u v2=,
    is_direct_tcp=)
    #连接
    如果不是cn.connect(,):
    引发IOError
    #工作连接。。。要检查目录是否存在,请询问其属性
    attrs=cn.getAttributes(,超时=30)
    
    一些注意事项:

    • 在上面的示例中,
      public\u pictures
      共享文件夹
      ,而
      路径
      则只是
      /

    • 您需要知道是否在端口
      139
      445
      (或自定义端口)上使用SMB。如果您通常希望传递的是后者,那么它是\u direct\u tcp=True(尽管有些服务器仍然在
      445
      上提供NetBIOS samba)

    • 如果您希望不需要用户名或密码,那么您可能希望使用空密码作为
      username=“guest”
      连接


    查看pysmb查看pysmb如果我不使用用户名和密码怎么办?感谢you@laur然后您可能想使用
    username=“guest”
    password=None
    (和
    domain=None
    ,这应该是默认值)如果我不使用用户名和密码怎么办?感谢you@laur然后您可能需要使用
    username=“guest”
    password=None
    (和
    domain=None
    ,这应该是默认值)