Exemplo n.º 1
0
def param_check():
    usage = "usage: %prog [options] arg"
    parser = OptionParser(usage)
    parser.add_option("-c",
                      "--conf",
                      dest="config",
                      help="the server conf file")
    parser.add_option("-s",
                      "--server-name",
                      dest="name",
                      help="the server name set in conf file. eg: tw06177")
    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()
    if option.config is None or option.name is None:
        parser.error(
            "\nIncorrect number of arguments. \nUse option \'--help\'.")

    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)

    return option
Exemplo n.º 2
0
def login_server(server):
    child = pexpect.spawn("ssh -l " + server.user + " " + server.host)
    index = child.expect(["password:"******"[#$]")
        return child
    else:
        utility.pexit("login " + server.host + " failed!")
Exemplo n.º 3
0
def login_server(server):
    child = pexpect.spawn("ssh -l " + server.user + " " + server.host)
    index = child.expect(["password:"******"[#$]")
        return child
    else:
        utility.pexit("login " + server.host + " failed!")
Exemplo n.º 4
0
def ensure_remote_usable(remote, session, user, password, host):
    client = autoLogin.login4public(remote.name, user, host, password)
    if utility.is_risk_path(remote.tmpPath):
        utility.pexit("risk path: " + remote.tmpPath + " found when try to remove it.")

    path = os.path.join(remote.tmpPath, session)
    client.sendline("mkdir -p  " + path)
    client.expect("[$#]")
    time.sleep(1)
    client.close()
Exemplo n.º 5
0
def get_server_version_info(server):
    conn = httplib.HTTPConnection(host=server.host, port=server.port)
    conn.request("GET", server.versionPath)
    resp = conn.getresponse()
    if resp.status is not 200:
        utility.pexit(server.host + " failed, status: " + str(resp.status))

    data = resp.read()
    conn.close()
    return data
Exemplo n.º 6
0
def get_server_version_info(server):
    conn = httplib.HTTPConnection(host=server.host, port=server.port)
    conn.request("GET", server.versionPath)
    resp = conn.getresponse()
    if resp.status is not 200:
        utility.pexit(server.host + " failed, status: " + str(resp.status))

    data = resp.read()
    conn.close()
    return data
Exemplo n.º 7
0
def ensure_remote_usable(remote, session, user, password, host):
    client = autoLogin.login4public(remote.name, user, host, password)
    if utility.is_risk_path(remote.tmpPath):
        utility.pexit("risk path: " + remote.tmpPath +
                      " found when try to remove it.")

    path = os.path.join(remote.tmpPath, session)
    client.sendline("mkdir -p  " + path)
    client.expect("[$#]")
    time.sleep(1)
    client.close()
Exemplo n.º 8
0
def jump_login(child, server):
    print("begin login " + server.name)
    child.sendline("ssh -l " + server.user + " " + server.host)
    index = child.expect("assword")
    if index == 0:
        child.sendline(server.password)
        index = child.expect("[#$]")
        if index == 0:
            print("login success!")
            child.sendline("")
            return child

    utility.pexit("login " + server.host + " failed!")
Exemplo n.º 9
0
def jump_login(child, server):
    print("begin login " + server.name)
    child.sendline("ssh -l " + server.user + " " + server.host)
    index = child.expect("assword")
    if index == 0:
        child.sendline(server.password)
        index = child.expect("[#$]")
        if index == 0:
            print("login success!")
            child.sendline("")
            return child

    utility.pexit("login " + server.host + " failed!")
Exemplo n.º 10
0
def login_essh(essh):
    child = pexpect.spawn("ssh -l " + essh.user + " " + essh.host)
    index = child.expect(["password:"******"passcode", "[#$]"])
        if index == 0:
            print("please enter passcode:")
            return child
        elif index == 1:
            child.sendline("")
            return child
        else:
            utility.pexit("login essh failed!")
Exemplo n.º 11
0
def login_essh(essh):
    child = pexpect.spawn("ssh -l " + essh.user + " " + essh.host)
    index = child.expect(["password:"******"passcode", "[#$]"])
        if index == 0:
            print("please enter passcode:")
            return child
        elif index == 1:
            child.sendline("")
            return child
        else:
            utility.pexit("login essh failed!")
Exemplo n.º 12
0
def local_upload(file_name, dest, session):
    print("local computer begin transfer " + file_name)
    path = os.path.join(dest.tmpPath, session)
    path = os.path.join(path, file_name)
    child = pexpect.spawn("scp " + file_name + " " + dest.user + "@" + dest.host + ":" + path)
    child.logfile = sys.stdout
    index = child.expect(["password:"******"local transfer complete")
        else:
            utility.pexit("file transfer to " + dest.host + " failed.")
Exemplo n.º 13
0
def local_upload(file_name, dest, session):
    print("local computer begin transfer " + file_name)
    path = os.path.join(dest.tmpPath, session)
    path = os.path.join(path, file_name)
    child = pexpect.spawn("scp " + file_name + " " + dest.user + "@" +
                          dest.host + ":" + path)
    child.logfile = sys.stdout
    index = child.expect(["password:"******"local transfer complete")
        else:
            utility.pexit("file transfer to " + dest.host + " failed.")
Exemplo n.º 14
0
def rscp(child, file_name, remote, session):
    path = os.path.join(remote.tmpPath, session)
    path = os.path.join(path, file_name)
    command = "scp " + file_name + " " + remote.user + "@" + remote.host + ":" + path
    child.sendline(command)
    index = -1
    while index != 0:
        index = child.expect(["password", "yes"])
        if index == 0:
            child.sendline(remote.password)
            index = child.expect("[#$]", timeout=SCP_TIMEOUT_INTERVAL)
            print(file_name + " has transfer to " + remote.host)

            if index != 0:
                utility.pexit("file remote transfer to " + remote.host + " failed.")
        elif index == 1:
            child.sendline("yes")
Exemplo n.º 15
0
def rscp(child, file_name, remote, session):
    path = os.path.join(remote.tmpPath, session)
    path = os.path.join(path, file_name)
    command = "scp " + file_name + " " + remote.user + "@" + remote.host + ":" + path
    child.sendline(command)
    index = -1
    while index != 0:
        index = child.expect(["password", "yes"])
        if index == 0:
            child.sendline(remote.password)
            index = child.expect("[#$]", timeout=SCP_TIMEOUT_INTERVAL)
            print(file_name + " has transfer to " + remote.host)

            if index != 0:
                utility.pexit("file remote transfer to " + remote.host +
                              " failed.")
        elif index == 1:
            child.sendline("yes")
Exemplo n.º 16
0
def param_check():
    usage = "usage: %prog [options] arg"
    parser = OptionParser(usage)
    parser.add_option("-c", "--conf", dest="config", help="the server conf file")
    parser.add_option("-s", "--server-name", dest="name", help="the server name set in conf file. eg: tw06177")
    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()
    if option.config is None or option.name is None:
        parser.error("\nIncorrect number of arguments. \nUse option '--help'.")

    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)

    return option
Exemplo n.º 17
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.")
Exemplo n.º 18
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.')
Exemplo n.º 19
0
def auto_login_essh(essh):
    print("begin login essh")
    child = pexpect.spawn("ssh -l " + essh.user + " " + essh.host)
    # child.logfile = sys.stdout
    index = child.expect(["password:"******"passcode", "[#$]"])
        if index == 0:
            print("waiting passcode...")
            time.sleep(5)
            global email
            code = passcode.get_passcode_from_email(email.host, email.user, email.password)
            print("passcode is " + code)
            child.sendline(code)
            index = child.expect("[#$]")
            if index == 0:
                print("login essh success")
                return child
            else:
                utility.pexit("login " + essh.host + " failed!")
        elif index == 1:
            return child
        else:
            utility.pexit("login " + essh.host + " failed!")
    else:
        utility.pexit("login " + essh.host + " failed!")
Exemplo n.º 20
0
def auto_login_essh(essh):
    print("begin login essh")
    child = pexpect.spawn("ssh -l " + essh.user + " " + essh.host)
    # child.logfile = sys.stdout
    index = child.expect(["password:"******"passcode", "[#$]"])
        if index == 0:
            print("waiting passcode...")
            time.sleep(5)
            global email
            code = passcode.get_passcode_from_email(email.host, email.user,
                                                    email.password)
            print("passcode is " + code)
            child.sendline(code)
            index = child.expect("[#$]")
            if index == 0:
                print("login essh success")
                return child
            else:
                utility.pexit("login " + essh.host + " failed!")
        elif index == 1:
            return child
        else:
            utility.pexit("login " + essh.host + " failed!")
    else:
        utility.pexit("login " + essh.host + " failed!")
Exemplo n.º 21
0
def remote_upload(file_name, remote, dest, session):
    ensure_remote_usable(remote, session)
    tmp_path = os.path.join(remote.tmpPath, session)
    file_full_path = os.path.join(tmp_path, file_name)
    print(file_full_path)
    client = pexpect.spawn(
        "scp " + file_name + " " + remote.user + "@" + remote.host + ":" + file_full_path)
    index = client.expect(["password:"******"file transfer to " + remote.host + " failed.")

    print("Copy " + file_name + " from local to " + remote.host + " complete")
    client = pexpect.spawn("ssh -l " + remote.user + " " + remote.host)
    index = client.expect(["password:"******"cd " + tmp_path)
        rscp(client, file_name, dest, session)
Exemplo n.º 22
0
def remote_upload(file_name, remote, dest, session):
    ensure_remote_usable(remote, session)
    tmp_path = os.path.join(remote.tmpPath, session)
    file_full_path = os.path.join(tmp_path, file_name)
    print(file_full_path)
    client = pexpect.spawn("scp " + file_name + " " + remote.user + "@" +
                           remote.host + ":" + file_full_path)
    index = client.expect(["password:"******"file transfer to " + remote.host + " failed.")

    print("Copy " + file_name + " from local to " + remote.host + " complete")
    client = pexpect.spawn("ssh -l " + remote.user + " " + remote.host)
    index = client.expect(["password:"******"cd " + tmp_path)
        rscp(client, file_name, dest, session)
Exemplo n.º 23
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
Exemplo n.º 24
0
def remote_server_dispatch(child, file_name, servers):
    for server in servers:
        server_info = serverlist.get_product_server(server)
        if server_info is None:
            utility.pexit("there isn't server named " + server)

        child.sendline(
            "scp " + file_name + " " + server_info.user + "@" + server_info.host + ":" + server_info.tmpPath + "/" + file_name)
        index = child.expect("assword")
        if index == 0:
            child.sendline(server_info.password)
            index = child.expect("[$#]")
            print(file_name + " has dispatch to " + server_info.host)
            if index != 0:
                utility.pexit("error occur when dispatch file to " + server_info.host)
        else:
            utility.pexit("error occur when dispatch file to " + server_info.host)
Exemplo n.º 25
0
def remote_server_dispatch(child, file_name, servers):
    for server in servers:
        server_info = serverlist.get_product_server(server)
        if server_info is None:
            utility.pexit("there isn't server named " + server)

        child.sendline("scp " + file_name + " " + server_info.user + "@" +
                       server_info.host + ":" + server_info.tmpPath + "/" +
                       file_name)
        index = child.expect("assword")
        if index == 0:
            child.sendline(server_info.password)
            index = child.expect("[$#]")
            print(file_name + " has dispatch to " + server_info.host)
            if index != 0:
                utility.pexit("error occur when dispatch file to " +
                              server_info.host)
        else:
            utility.pexit("error occur when dispatch file to " +
                          server_info.host)
Exemplo n.º 26
0
    conn.close()
    return data


def get_config(path):
    v = json.load(file(path),
                  object_hook=lambda d: namedtuple('server', d.keys())
                  (*d.values()))

    apps = dict()
    for item in v:
        apps[item.name] = item
    return apps


if __name__ == '__main__':
    v = get_config("/Users/lvfei/Code/ToolKit/conf/apps.local.json")
    app = "recsys-servering"
    app = v.get(app)

    version = None
    for server in app.servers:
        tmp = get_server_version_info(server)
        if version is None:
            version = tmp
        else:
            if tmp != version:
                utility.pexit(server.name + " resp value is not equal prev's")

    print(version)
Exemplo n.º 27
0
    data = resp.read()
    conn.close()
    return data


def get_config(path):
    v = json.load(file(path), object_hook=lambda d: namedtuple('server', d.keys())(*d.values()))

    apps = dict()
    for item in v:
        apps[item.name] = item
    return apps


if __name__ == '__main__':
    v = get_config("/Users/lvfei/Code/ToolKit/conf/apps.local.json")
    app = "recsys-servering"
    app = v.get(app)

    version = None
    for server in app.servers:
        tmp = get_server_version_info(server)
        if version is None:
            version = tmp
        else:
            if tmp != version:
                utility.pexit(server.name + " resp value is not equal prev's")

    print(version)
Exemplo n.º 28
0
def merge_file(client, files, file_name, sha1sum):
    command = "cat "
    for f in files:
        command += f
        command += " "

    command += " > "
    command += file_name

    client.sendline(command)
    index = client.expect(["[#$]"])
    if index != 0:
        utility.pexit("operate remote failed!")

    # For unknown reason, it needs print sha1sum twice.
    client.sendline("sha1sum " + file_name + " > sha1sum.txt")
    index = client.expect(["[#$]"])
    if index != 0:
        utility.pexit("operate remote failed!")

    client.sendline("cat sha1sum.txt")
    index = client.expect(["[#$]"])
    if index != 0:
        utility.pexit("operate remote failed!")

    client.sendline("cat sha1sum.txt")
    index = client.expect(["[#$]"])
    if index != 0:
        utility.pexit("operate remote failed!")

    if index != 0:
        utility.pexit("file transfer failed for sha1sum not equal")
    else:
        log = client.before.replace('\r', ' ').replace('\n', ' ').split(' ')
        if len(filter(lambda x: x == sha1sum, log)) == 0:
            utility.pexit("file transfer failed for sha1sum not equal")
Exemplo n.º 29
0
def merge_file(client, files, file_name, sha1sum):
    command = "cat "
    for f in files:
        command += f
        command += " "

    command += " > "
    command += file_name

    client.sendline(command)
    index = client.expect(["[#$]"])
    if index != 0:
        utility.pexit("operate remote failed!")

    # For unknown reason, it needs print sha1sum twice.
    client.sendline("sha1sum " + file_name + " > sha1sum.txt")
    index = client.expect(["[#$]"])
    if index != 0:
        utility.pexit("operate remote failed!")

    client.sendline("cat sha1sum.txt")
    index = client.expect(["[#$]"])
    if index != 0:
        utility.pexit("operate remote failed!")

    client.sendline("cat sha1sum.txt")
    index = client.expect(["[#$]"])
    if index != 0:
        utility.pexit("operate remote failed!")

    if index != 0:
        utility.pexit("file transfer failed for sha1sum not equal")
    else:
        log = client.before.replace('\r', ' ').replace('\n', ' ').split(' ')
        if len(filter(lambda x: x == sha1sum, log)) == 0:
            utility.pexit("file transfer failed for sha1sum not equal")
Exemplo n.º 30
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