检查python3中是否存在samba目录
我有一个samba目录smb://172.16.0.10/public_pictures/ 我想知道它是否可以访问 请尝试以下操作:检查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.
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
(或自定义端口)上使用SMB。如果您通常希望传递的是后者,那么它是\u direct\u tcp=True(尽管有些服务器仍然在445
上提供NetBIOS samba)445
- 如果您希望不需要用户名或密码,那么您可能希望使用空密码作为
连接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
(或自定义端口)上使用SMB。如果您通常希望传递的是后者,那么它是\u direct\u tcp=True(尽管有些服务器仍然在445
上提供NetBIOS samba)445
- 如果您希望不需要用户名或密码,那么您可能希望使用空密码作为
连接username=“guest”
username=“guest”
,password=None
(和domain=None
,这应该是默认值)如果我不使用用户名和密码怎么办?感谢you@laur然后您可能需要使用username=“guest”
,password=None
(和domain=None
,这应该是默认值)