コード例 #1
0
def delUsersFromSudo(delSudoUsers):
    for delSudoUser in delSudoUsers:
        rm_user_from_sudo_CMD = Utils.recoverStringByDict(
                 projConst.cmdTemplate['rm_user_from_sudo'],
                 {"USERNAME": delSudoUser,}
            )
        ShellCmdExecutor.executeSync(rm_user_from_sudo_CMD)    
コード例 #2
0
def appendUsersToSudo(newSudoUsers):
    for newSudoUser in newSudoUsers:
        append_user_to_sudo_CMD = Utils.recoverStringByDict(
                 projConst.cmdTemplate['append_user_to_sudo'],
                 {"USERNAME": newSudoUser,}
            )
        ShellCmdExecutor.executeSync(append_user_to_sudo_CMD)
コード例 #3
0
def addUserWithGroup(users, group):
    for user in users:
        add_user_with_group_CMD = Utils.recoverStringByDict(
                 projConst.cmdTemplate['add_user_with_group'],
                 {"USERNAME": user, "GROUP": group,}
            )
        ShellCmdExecutor.executeSync(add_user_with_group_CMD)        
        updateUserPubKeys(user, group)
コード例 #4
0
def _connectionTest(ip, port, sshKeyPath):
    ssh_test_CMD = Utils.recoverStringByDict(
        projConst.toolCmdTemplate['ssh_test'],
        {
           "PORT": port,
           "SSHKEYPATH": sshKeyPath,
           "IP": ip,
        }
    )   
    ShellCmdExecutor.executeSync(ssh_test_CMD, isPrint = True)
コード例 #5
0
def executeShellCmd(data):
    ip = data['ip']
    port = data['port']
    sshKeyPath = data['sshKeyPath']
    cmd = data['cmd']
    ssh_exe_cmd_CMD = Utils.recoverStringByDict(
        projConst.toolCmdTemplate['ssh_exe_cmd'],
        {
           "PORT": port,
           "SSHKEYPATH": sshKeyPath,
           "IP": ip,
           "CMD": cmd,
        }
    )
    ShellCmdExecutor.executeSync(ssh_exe_cmd_CMD, isPrint = True)    
コード例 #6
0
def createBundleToSlave(env, envData):
    keyBelongsGroups = map(lambda group: group + "_*.pub", DictAddrReader.readByPath("groupList", envData).split(','))
    planToShipFiles = keyBelongsGroups + projConst.fileToShip.split(',')
    findExp = Utils.findExpConstructFromList(planToShipFiles)

    slaveConfAbsPath = Utils.recoverStringByDict(projConst.confTemplate['slaveConfAbsPath'], {"HOSTSET": env, })
    Utils.flushDictToFile(
        {'env': env,
         'envData': envData
        }
        , slaveConfAbsPath)

    pushFileAbsPath = Utils.recoverStringByDict(projConst.confTemplate['pushFileAbsPath'], {"EXPS": findExp, "HOSTSET": env, })
    pushFileName = Utils.recoverStringByDict(projConst.confTemplate['pushFileName'], {"HOSTSET": env, })

    tar_to_ship_CMD = Utils.recoverStringByDict(projConst.cmdTemplate['tar_to_ship'], {"EXPS": findExp, "FILE": pushFileAbsPath,})
    ShellCmdExecutor.executeSync(tar_to_ship_CMD)
    
    return (pushFileAbsPath, pushFileName,)
コード例 #7
0
def process(ip, port, sshKeyPath, pushFileAbsPath, pushFileName):
    scp_file_to_host_CMD = Utils.recoverStringByDict(
        projConst.cmdTemplate['scp_file_to_host'],
        {"PORT": port, "SSHKEYPATH": sshKeyPath, "IP": ip, "FILE": pushFileAbsPath,}
    )
    ShellCmdExecutor.executeSync(scp_file_to_host_CMD)

    slaveCmd_CMD = Utils.recoverStringByDict(
        projConst.cmdTemplate['slaveCmd'],
        {
            "FILE": pushFileName,
        }
    )

    ssh_with_cmd_CMD = Utils.recoverStringByDict(
        projConst.cmdTemplate['ssh_with_cmd'],
        {
           "PORT": port,
               "SSHKEYPATH": sshKeyPath,
               "IP": ip,
               "CMD": slaveCmd_CMD,
        }
    )   
    print ShellCmdExecutor.executeSync(ssh_with_cmd_CMD)
コード例 #8
0
def main():
    groupUserMap = {}
    # build group -> users mapping
    for file in os.listdir(projConst.defaultResAbsPathInSlave):
        match = regexp['match_group_user'].match(file)
        if not match:
            continue

        group = match.group(1)
        user = match.group(2)
        if not groupUserMap.get(group, None):
            groupUserMap[group] = []
        groupUserMap[group].append(user)
    
    for file in glob.glob(projConst.runtimeTmp + "slaveProj_*.json"):
        slaveConfigPath = file
    slaveConfig = Utils.getDictFromFile(slaveConfigPath)
    
    groups = DictAddrReader\
                  .readByPath('envData.groupList', slaveConfig)\
                  .split(',')
    for group in groups:

        add_group_CMD = Utils.recoverStringByDict(
                 projConst.cmdTemplate['add_group'],
                 {"GROUP": group,}
            )
        ShellCmdExecutor.executeSync(add_group_CMD)
         
 
        get_users_in_group_CMD = Utils.recoverStringByDict(
                 projConst.cmdTemplate['get_users_in_group'],
                 {"GROUP": group,}
            )
        usersInSystem = filter(lambda u: len(u) > 0, ShellCmdExecutor.executeSync(get_users_in_group_CMD).rstrip().split(' '))
        usersInSystem = set(usersInSystem)
        targetUsers = set(groupUserMap.get(group, []))
 
        delUsers = list(usersInSystem.difference(targetUsers))
        
        targetUsersList = list(targetUsers)
        addUserWithGroup(targetUsersList, group)
        delUser(delUsers)
    
    # sudo group process 
    get_users_in_sudo_group_CMD = projConst.cmdTemplate['get_users_in_sudo_group']
              
    sudoUsersInSystem = filter(lambda u: len(u) > 0, ShellCmdExecutor.executeSync(get_users_in_sudo_group_CMD).rstrip().split(' '))
    sudoUsersInSystem = set(sudoUsersInSystem)

    sudoGroups = DictAddrReader\
                  .readByPath('envData.sudoGroups', slaveConfig)\
                  .split(',')

    targetSudoUsers = set()
    for sudoGroup in sudoGroups:
        targetSudoUsers = targetSudoUsers.union(set(groupUserMap.get(sudoGroup, [])))

    newSudoUsers = list(targetSudoUsers.difference(sudoUsersInSystem))
    delSudoUsers = list(sudoUsersInSystem.difference(targetSudoUsers))
    appendUsersToSudo(newSudoUsers)
    delUsersFromSudo(delSudoUsers)
コード例 #9
0
def updateUserPubKeys(user, group):
    update_user_pub_key_CMD = Utils.recoverStringByDict(
             projConst.cmdTemplate['update_user_pub_key'],
             {"USERNAME": user, "GROUP": group,}
        )
    ShellCmdExecutor.executeSync(update_user_pub_key_CMD)