示例#1
0
文件: cmd.py 项目: b02330224/oldboy
def run(*args):
    #print("args:", args)
    groups = args[0]
    cmd = args[2]
    # 对所有配置的服务器执行命令
    if groups == "*":
        hosts = parser.load_host_all()
    else:
        # 根据组名执行命令
        hosts = parser.search_host_by_group(groups)
    if len(hosts) == 0:
        print("\033[31;1m no group name ' {0} ' found \033[0M".format(groups))
        sys.exit(0)

    # 设置5个进程池
    pool = Pool(5)
    for ip in hosts.keys():
        host_info = parser.host_info_by_ip(ip)
        pool.apply_async(_ssh_exec_cmd, args=(cmd,), kwds=host_info)
    pool.close()
    pool.join()
示例#2
0
文件: ftp.py 项目: b02330224/oldboy
def run(*args):
    """
    执行ftp传文件功能
    :param args:
    :return:
    """
    # 进行操作的主机字典
    exec_hosts = {}
    # 获取要执行的package名称
    exec_group = args[0]
    package_name = args[2]
    # 加载 package 文件
    package_file = os.path.join(settings.package_path, "{name}.sls".format(name=package_name))
    # 判断执行package文件是否存在
    if not os.path.exists(package_file):
    	print("\n\033[31;1m package  '{0}' not found! \033[0m".format(package_name))
    	sys.exit(0)
    	
    # 加载文件信息
    sftp_data = parser.get_package_date(package_file)
    # 根据组获取组内的所有主机信息
    host_in_group = parser.search_host_by_group(exec_group)
    if len(host_in_group) == 0:
        print("\n\033[31;1m no groupname '{0}' found! \033[0m".format(exec_group))
        sys.exit(0)

    # 如果配置文件中指定hosts:all,对组中所有主机进行配置执行
    if sftp_data['hosts'] == 'all':
        for k, v in host_in_group.items():
            exec_hosts.update(parser.host_info_by_ip(k))

    else:
        # 如果是指定部分IP执行 ip1,ip2
        ip_list = sftp_data['hosts'].split(",")
        for ip in ip_list:
            exec_hosts.update(parser.host_info_by_ip(ip))

    runpackage(sftp_data, exec_hosts)