美文网首页
smbclient python

smbclient python

作者: andforce | 来源:发表于2021-03-01 10:57 被阅读0次
import os

import ShellExe


class SmbClient:

    def __init__(self, url: str, name: str, pwd: str, group: str):
        self.url = url
        if not self.url.endswith("/"):
            self.url = url + "/"
        self.name = name
        self.pwd = pwd
        self.group = group

    def ls_dir(self, path: str):
        print("%s%%%s" % (self.name, self.pwd))
        cmd = 'smbclient %s ' \
              '-U %s%%%s ' \
              '-W %s ' \
              '-c "cd %s;ls"' % (self.url, self.name, self.pwd, self.group, path)
        print("cmd: " + cmd)
        logs = ShellExe.exe(cmd)
        # return logs.splitlines(False)
        result = []
        for line in logs.splitlines(False):
            if not (line.startswith("  .") or line.startswith('\t\t')):
                line_trim: str = line.strip()
                line_split = line_trim.split(" ")[0]
                if line_split != '':
                    result.append(line_split)
        return result

    # smb://192.168.1.1/share/test.txt
    # //192.168.1.1/share/test.txt
    # test.txt
    def download(self, url: str, local_path: str):
        exp_local_save_path = os.path.expanduser(local_path)
        print("want_download_url: " + url)
        print("exp_local_save_path0: " + exp_local_save_path)

        if url.startswith("smb:"):
            url = url[url.find("smb:") + 4:]
        print("want_download_url1: " + url)

        if url.startswith(self.url):
            url = url[url.find(self.url) + len(self.url):]
        print("want_download_url2: " + url)

        if url.endswith("/"):
            url = url[:url.rfind("/")]
        print("want_download_url3: " + url)

        cd_to_download = url[:url.rfind("/")]
        print("parent: " + cd_to_download)

        mget_name = url[url.rfind("/") + 1:]
        print("mkdir name: " + mget_name)

        download_cmd = """smbclient %s -U %s%%%s -W %s -c 'prompt OFF;recurse ON;cd '%s';lcd '%s';mget %s'""" \
                       % (self.url, self.name, self.pwd, self.group, cd_to_download, exp_local_save_path, mget_name)
        logs = ShellExe.exe(download_cmd)
        print(logs)


if __name__ == "__main__":
    client = SmbClient("//192.168.1.1/share/", "", "", "group.com")
    print(client.download(
        "smb://192.168.1.1/share/test.txt",
        "~/Desktop/tmp/"))

相关文章

网友评论

      本文标题:smbclient python

      本文链接:https://www.haomeiwen.com/subject/rfoofltx.html