Ejemplo n.º 1
0
def main():
    file_name, lan_servers, product_servers, user, password, host = param_check(sys.argv)
    session = utility.generate_session_name()
    start = time.time()
    essh = serverlist.get_jump_server()
    print("makeup remote server: " + essh.host)
    ensure_remote_usable(essh, session, user, password, host)

    sha1sum = utility.calc_sha1sum(file_name)
    size = os.path.getsize(file_name)

    tasks = []
    files = []
    if len(lan_servers) != 0:
        print(lan_servers, len(lan_servers))
        client_count = len(lan_servers) + 1
        block_size = size / client_count + client_count
        files = utility.split_file(file_name, str(block_size))

        for index, name in enumerate(lan_servers):
            transfer_file = files[index]
            server_info = serverlist.get_lan_server(name)
            task = threading.Thread(target=remote_upload, args=(transfer_file, server_info, essh, session))
            tasks.append(task)

        task = threading.Thread(target=local_upload, args=(files[len(lan_servers)], essh, session))
        tasks.append(task)
    else:
        task = threading.Thread(target=local_upload, args=(file_name, essh, session))
        tasks.append(task)

    for t in tasks:
        t.setDaemon(True)
        t.start()

    while True:
        time.sleep(1)
        if is_all_task_finished(tasks):
            break

    finish = time.time()

    child = login_server(essh)
    tmp_path = os.path.join(essh.tmpPath, session)
    child.sendline("cd " + tmp_path)
    if len(lan_servers) != 0:
        merge_file(child, files, file_name, sha1sum)

    for f in files:
        os.remove(f)

    print("-----------------File upload success.-----------------------")
    print("Total cost " + str(finish - start))
    print(file_name + ": " + sha1sum)
    print("-----------------Begin dispatch file.-----------------------")

    remote_server_dispatch(child, file_name, product_servers)
    child.close()
Ejemplo n.º 2
0
def param_check(argv):
    usage = "usage: %prog [options] arg"
    parser = OptionParser(usage)
    parser.add_option("-f", "--file", dest="filename", help="transfer the file to remote server")
    parser.add_option("-c", "--conf", dest="config", help="the server conf file")
    parser.add_option("-l", "--lan-servers", dest="lan_servers",
                      help="use lan servers to speed scp, eg:server1,server2[,server_n]")
    parser.add_option("-d", "--destination-servers", dest="dest_servers",
                      help="destination that file would be upload. eg:server1[,server_n]")

    parser.add_option("-u", "--user", dest="user", help="email user name, eg:[email protected]")
    parser.add_option("-p", "--password", dest="password", help="email password")
    parser.add_option("-H", "--host", dest="pop3", help="pop3 server host name, eg:pop3.xunlei.com")

    (option, args) = parser.parse_args(argv)

    if option.filename is None or option.config is None or option.dest_servers is None \
            or option.user is None or option.password is None or option.pop3 is None:
        parser.error("\nIncorrect number of arguments. \nUse option \'--help\'.")

    filename = option.filename
    if not os.path.exists(filename) or not os.path.isfile(filename):
        utility.pexit("File \"" + filename + "\" is not a file or not exist.")

    config = option.config
    if not os.path.exists(config) or not os.path.isfile(config):
        utility.pexit("File \"" + config + "\" is not a file or not exist.")
    serverlist.load_config(config)

    lan_servers = []
    if option.lan_servers is not None:
        lan_servers = option.lan_servers.split(',')
        for name in lan_servers:
            info = serverlist.get_lan_server(name)
            if info is None:
                utility.pexit("server \"" + name + "\" is not exist")

    product_servers = option.dest_servers.split(',')
    for server_name in product_servers:
        info = serverlist.get_product_server(server_name)
        if info is None:
            utility.pexit("server \"" + server_name + "\" is not exist")

    return filename, lan_servers, product_servers, option.user, option.password, option.pop3
Ejemplo n.º 3
0
def login(name):
    if name == "essh":
        jump = serverlist.get_jump_server()
        child = auto_login_essh(jump)
        return child
    else:
        server = serverlist.get_lan_server(name)
        if server is not None:
            child = login_server(server)
            return child

        server = serverlist.get_product_server(name)
        if server is not None:
            jump = serverlist.get_jump_server()
            child = auto_login_essh(jump)
            child = jump_login(child, server)
            return child

        utility.pexit("server \"" + name + "\" not exists.")
Ejemplo n.º 4
0
def login(name):
    if name == "essh":
        jump = serverlist.get_jump_server()
        child = auto_login_essh(jump)
        return child
    else:
        server = serverlist.get_lan_server(name)
        if server is not None:
            child = login_server(server)
            return child

        server = serverlist.get_product_server(name)
        if server is not None:
            jump = serverlist.get_jump_server()
            child = auto_login_essh(jump)
            child = jump_login(child, server)
            return child

        utility.pexit('server "' + name + '" not exists.')
Ejemplo n.º 5
0
def main():
    file_name, lan_servers, product_servers, user, password, host = param_check(
        sys.argv)
    session = utility.generate_session_name()
    start = time.time()
    essh = serverlist.get_jump_server()
    print("makeup remote server: " + essh.host)
    ensure_remote_usable(essh, session, user, password, host)

    sha1sum = utility.calc_sha1sum(file_name)
    size = os.path.getsize(file_name)

    tasks = []
    files = []
    if len(lan_servers) != 0:
        print(lan_servers, len(lan_servers))
        client_count = len(lan_servers) + 1
        block_size = size / client_count + client_count
        files = utility.split_file(file_name, str(block_size))

        for index, name in enumerate(lan_servers):
            transfer_file = files[index]
            server_info = serverlist.get_lan_server(name)
            task = threading.Thread(target=remote_upload,
                                    args=(transfer_file, server_info, essh,
                                          session))
            tasks.append(task)

        task = threading.Thread(target=local_upload,
                                args=(files[len(lan_servers)], essh, session))
        tasks.append(task)
    else:
        task = threading.Thread(target=local_upload,
                                args=(file_name, essh, session))
        tasks.append(task)

    for t in tasks:
        t.setDaemon(True)
        t.start()

    while True:
        time.sleep(1)
        if is_all_task_finished(tasks):
            break

    finish = time.time()

    child = login_server(essh)
    tmp_path = os.path.join(essh.tmpPath, session)
    child.sendline("cd " + tmp_path)
    if len(lan_servers) != 0:
        merge_file(child, files, file_name, sha1sum)

    for f in files:
        os.remove(f)

    print("-----------------File upload success.-----------------------")
    print("Total cost " + str(finish - start))
    print(file_name + ": " + sha1sum)
    print("-----------------Begin dispatch file.-----------------------")

    remote_server_dispatch(child, file_name, product_servers)
    child.close()
Ejemplo n.º 6
0
def param_check(argv):
    usage = "usage: %prog [options] arg"
    parser = OptionParser(usage)
    parser.add_option("-f",
                      "--file",
                      dest="filename",
                      help="transfer the file to remote server")
    parser.add_option("-c",
                      "--conf",
                      dest="config",
                      help="the server conf file")
    parser.add_option(
        "-l",
        "--lan-servers",
        dest="lan_servers",
        help="use lan servers to speed scp, eg:server1,server2[,server_n]")
    parser.add_option(
        "-d",
        "--destination-servers",
        dest="dest_servers",
        help="destination that file would be upload. eg:server1[,server_n]")

    parser.add_option("-u",
                      "--user",
                      dest="user",
                      help="email user name, eg:[email protected]")
    parser.add_option("-p",
                      "--password",
                      dest="password",
                      help="email password")
    parser.add_option("-H",
                      "--host",
                      dest="pop3",
                      help="pop3 server host name, eg:pop3.xunlei.com")

    (option, args) = parser.parse_args(argv)

    if option.filename is None or option.config is None or option.dest_servers is None \
            or option.user is None or option.password is None or option.pop3 is None:
        parser.error(
            "\nIncorrect number of arguments. \nUse option \'--help\'.")

    filename = option.filename
    if not os.path.exists(filename) or not os.path.isfile(filename):
        utility.pexit("File \"" + filename + "\" is not a file or not exist.")

    config = option.config
    if not os.path.exists(config) or not os.path.isfile(config):
        utility.pexit("File \"" + config + "\" is not a file or not exist.")
    serverlist.load_config(config)

    lan_servers = []
    if option.lan_servers is not None:
        lan_servers = option.lan_servers.split(',')
        for name in lan_servers:
            info = serverlist.get_lan_server(name)
            if info is None:
                utility.pexit("server \"" + name + "\" is not exist")

    product_servers = option.dest_servers.split(',')
    for server_name in product_servers:
        info = serverlist.get_product_server(server_name)
        if info is None:
            utility.pexit("server \"" + server_name + "\" is not exist")

    return filename, lan_servers, product_servers, option.user, option.password, option.pop3