def create_bindhosts(argvs): ''' create bind hosts :param argvs: :return: ''' if '-f' in argvs: bindhosts_file = argvs[argvs.index("-f") + 1] else: print_err( "invalid usage, should be:\ncreate_hosts -f <the new bindhosts file>", quit=True) source = yaml_parser(bindhosts_file) if source: for key, val in source.items(): print(key, val) # 获取到了主机 host_obj = session.query(models.Host).filter( models.Host.hostname == val.get('hostname')).first() # 取hostname assert host_obj # 断言,必须存在 for item in val['remote_users']: # 判断 print(item) assert item.get('auth_type') if item.get('auth_type') == 'ssh-password': # 判断认证password remoteuser_obj = session.query(models.RemoteUser).filter( models.RemoteUser.username == item.get('username'), models.RemoteUser.password == item.get( 'password')).first() else: # 获取远程用户 remoteuser_obj = session.query(models.RemoteUser).filter( models.RemoteUser.username == item.get('username'), models.RemoteUser.auth_type == item.get('auth_type'), ).first() if not remoteuser_obj: # 没取到,程序退出 print_err("RemoteUser obj %s does not exist." % item, quit=True) bindhost_obj = models.BindHost(host_id=host_obj.id, remoteuser_id=remoteuser_obj.id) session.add(bindhost_obj) # 获取到关系后添加session # for groups this host binds to if source[key].get('groups'): # 获取组 group_objs = session.query(models.HostGroup).filter( models.HostGroup.name.in_( source[key].get('groups'))).all() assert group_objs print('groups:', group_objs) bindhost_obj.host_groups = group_objs # for user_profiles this host binds to if source[key].get('user_profiles'): # 判断是否直接属于哪一台机器 userprofile_objs = session.query( models.Userprofile).filter( models.Userprofile.username.in_( source[key].get('user_profiles'))).all() assert userprofile_objs print("userprofiles:", userprofile_objs) bindhost_obj.user_profiles = userprofile_objs # print(bindhost_obj) session.commit()
def view_record(user): ''' 查看上课记录 :param user: :return: ''' record_student = session.query(models.RecordStudent).filter_by().all() for i in record_student: student_teachclass_obj = session.query(models.StudentTeachClass). \ filter_by(id=i.student_teach_class_id).first() class_teacher_obj = session.query(models.TeacherClass).filter_by( id=student_teachclass_obj.teacher_course.bind_teacher_class_id ).first() course_obj = session.query(models.CourseClassRecord).filter_by( id=student_teachclass_obj.teacher_course.bind_course_time_id ).first() studentname_obj = session.query(models.Student).filter_by( qq_number=student_teachclass_obj.student.qq_number).first() if class_teacher_obj.teacher.username == user.username: print('绑定id:%s 课程:%s 课程时间:%s 讲师:%s 教室:%s 学生名:%s 学生qq %s 上课记录:%s' % (student_teachclass_obj.id, course_obj.course.coursename, course_obj.course_time.course_time_name, class_teacher_obj.teacher.username, class_teacher_obj.class_room.classname, studentname_obj.username, studentname_obj.qq_number, i.record.record))
def create_bindhosts(argvs): msg = 'the new bind_hosts file' bindhost_file = parse_argvs(argvs, msg) source = yaml_parser(bindhost_file) if source: for key,val in source.items(): host_obj = session.query(models.Host).filter(models.Host.hostname==val.get('hostname')).first() assert host_obj for item in val['remote_users']: assert item.get('auth_type') if item.get('auth_type') == 'ssh-passwd': remoteuser_obj = session.query(models.RemoteUser).filter(models.RemoteUser.username==item.get('username'), models.RemoteUser.password==item.get('password')).first() else: remoteuser_obj = session.query(models.RemoteUser).filter(models.RemoteUser.username==item.get('username'), models.RemoteUser.auth_type==item.get('auth_type')).first() # print('>>>>',host_obj,remoteuser_obj) bindhost_obj = models.BindHost(host_id=host_obj.id,remote_user_id=remoteuser_obj.id) session.add(bindhost_obj) if source[key].get('groups'): groups = common_filters.groups_filter(source[key]) bindhost_obj.groups = groups if source[key].get('user_profiles'): user_profiles = common_filters.user_profiles_filter(source[key]) bindhost_obj.user_profiles = user_profiles session.commit()
def create_bindhosts(argvs): if '-f' in argvs: bindhosts_file = argvs[argvs.index("-f") + 1] else: print_err( "invalid usage, should be:\ncreate_hosts -f <the new bindhosts file>", quit=True) source = yaml_parser(bindhosts_file) if source: for key, val in source.items(): print(key, val) host_obj = session.query(models.Host).filter( models.Host.hostname == val.get('hostname')).first() assert host_obj print(host_obj) '''注意下面的for语句,实际上val['remote_users']返回的是一个列表(yaml中如果有-,则变成列表),然后列表里面嵌套了字典, 所以for其实是对列表进行了循环,而列表里面的元素则是一个个字典''' for item in val['remote_users']: print('remote_users is', item) '''assert断言,表示如果没有auth_type这个key,或取不到auth_type这个的值,则下面语句不执行。''' assert item.get('auth_type') if item.get('auth_type') == 'ssh-password': remoteuser_obj = session.query(models.RemoteUser).filter( models.RemoteUser.username == item.get('username'), models.RemoteUser.password == item.get('password'), #models.RemoteUser.auth_type==item.get('auth_type'), ).first() else: remoteuser_obj = session.query(models.RemoteUser).filter( models.RemoteUser.username == item.get('username'), models.RemoteUser.auth_type == item.get('auth_type'), ).first() if not remoteuser_obj: print_err('user [%s] is not exist' % (item), quit=True) bindhost_obj = models.BindHost(host_id=host_obj.id, remoteuser_id=remoteuser_obj.id) session.add(bindhost_obj) '''判断是否有groups这个字段,如果有则执行下面语句''' if source[key].get('groups'): print(source[key].get('groups')) group_objs = session.query(models.HostGroup).filter( models.HostGroup.name.in_( source[key].get('groups'))).all() assert group_objs '''通过下面语句将bind_host和host_group两个表的关联表bindhost_m2m_hostgroup建立起来, 将两个表相对应的主机和组的id相对应起来,实现主机和组的关联。 注意下面的语句将对关联表插入相关联的ID值''' bindhost_obj.host_groups = group_objs if source[key].get('user_profiles'): user_objs = session.query(models.UserProfile).filter( models.UserProfile.username.in_( source[key].get('user_profiles'))).all() assert user_objs '''通过下面的语句,将堡垒机用户表和bind_host表相关联起来,对两者的关联表user_m2m_bindhost 插入对应的两方id,通过该表的外键实现两表关联,最终实现用户和主机关联''' bindhost_obj.user_profiles = user_objs session.commit()
def create_bindhosts(argvs): ''' create bind hosts :param argvs: :return: ''' if '-f' in argvs: bindhosts_file = argvs[argvs.index("-f") + 1] else: print_err( "invalid usage, should be:\ncreate_bindhosts -f <the new bindhosts file>", quit=True) source = yaml_parser(bindhosts_file) if source: for key, val in source.items(): # print(key,val) host_obj = session.query(model_v2.Host).filter( model_v2.Host.hostname == val.get('hostname')).first() assert host_obj for item in val['remote_users']: print(item) assert item.get('auth_type') if item.get('auth_type') == 'ssh-password': remoteuser_obj = session.query(model_v2.RemoteUser).filter( model_v2.RemoteUser.username == item.get('username'), model_v2.RemoteUser.password == item.get( 'password')).first() else: remoteuser_obj = session.query(model_v2.RemoteUser).filter( model_v2.RemoteUser.username == item.get('username'), model_v2.RemoteUser.auth_type == item.get('auth_type'), ).first() if not remoteuser_obj: print_err("RemoteUser obj %s does not exist." % item, quit=True) bindhost_obj = model_v2.BindHost( host_id=host_obj.id, remoteuser_id=remoteuser_obj.id) session.add(bindhost_obj) # for groups this host binds to if source[key].get('groups'): group_objs = session.query(model_v2.HostGroup).filter( model_v2.HostGroup.name.in_( source[key].get('groups'))).all() assert group_objs print('groups:', group_objs) bindhost_obj.hostgroups = group_objs # for user_profiles this host binds to if source[key].get('fortress_user'): fortressuser_objs = session.query( model_v2.FortressUser).filter( model_v2.FortressUser.username.in_( source[key].get('fortress_user'))).all() assert fortressuser_objs print("fortressuser:", fortressuser_objs) bindhost_obj.fortress_users = fortressuser_objs # print(bindhost_obj) session.commit()
def create_bindhosts(argvs): """ create bind hosts 主机及该主机上的账户信息 :param argvs: :return: """ if '-f' in argvs: bindhosts_file = argvs[argvs.index("-f") + 1] else: print_err("invalid usage, should be:\ncreate_bindhosts -f <the new bindhosts file>", logout=True) return source = yaml_parser(bindhosts_file) if source: logger.debug("source:\n%s" % source) for key, val in source.items(): logger.debug("%s:%s" % (key, val)) # 要Bind的主机信息 host_obj = session.query(models.Host).filter(models.Host.hostname == val.get('hostname')).first() logger.debug("host_obj---\n%s" % host_obj) assert host_obj for item in val['remote_users']: # 要bind到该主机上的账户信息 logger.debug(item) assert item.get('auth_type') if item.get('auth_type') == 'ssh-password': remoteuser_obj = session.query(models.RemoteUser).filter( models.RemoteUser.username == item.get('username'), models.RemoteUser.password == item.get('password') ).first() else: remoteuser_obj = session.query(models.RemoteUser).filter( models.RemoteUser.username == item.get('username'), models.RemoteUser.auth_type == item.get('auth_type'), ).first() if not remoteuser_obj: print_err("RemoteUser obj %s does not exist." % item, logout=True) bindhost_obj = models.BindHost(host_id=host_obj.id, remoteuser_id=remoteuser_obj.id) # 设定bind关系 session.add(bindhost_obj) # for groups this host binds to 该主机bind到主机组 if source[key].get('groups'): group_objs = session.query(models.HostGroup).filter( models.HostGroup.name.in_(source[key].get('groups'))).all() assert group_objs logger.info('groups:%s' % group_objs) bindhost_obj.host_groups = group_objs # for user_profiles this host binds to 该主机bind到的用户 if source[key].get('user_profiles'): userprofile_objs = session.query(models.UserProfile).filter(models.UserProfile.username.in_( source[key].get('user_profiles') )).all() logger.debug(userprofile_objs) assert userprofile_objs logger.info("userprofiles:%s" % userprofile_objs) bindhost_obj.user_profiles = userprofile_objs # print(bindhost_obj) session.commit() logger.info("create bindhosts sucess!")
def create_bindhosts(argv): ''' create bind hosts :param argv: :return: ''' if '-f' in argv: bindhost_file = argv[argv.index('-f') + 1] else: print_err( "invalid usage, should be:\ncreate_hosts -f <the new bindhosts file>", quit=True) source = yaml_parser(bindhost_file) if source: print(source) for key, val in source: host_obj = session.query(models.Host).filter( models.Host.hostname == val.get('hostname')) assert host_obj for item in val['remote_users']: assert item.get('auth_type') if item.get('auth_type') == 'ssh-passwd': remoteuser_obj = session.query(models.RemoteUser).filter( models.RemoteUser.username == item.get('username'), models.RemoteUser.password == item.get('password'), ).first() else: remoteuser_obj = session.query(models.RemoteUser).filter( models.RemoteUser.username == item.get('username'), models.RemoteUser.auth_type == item.get('auth_type'), ).first() if not remoteuser_obj: print_err("RemoteUser obj %s does not exist." % item, quit=True) bindhost_obj = models.BindHost(host_id=host_obj.id, remoteuser_id=remoteuser_obj.id) session.add(bindhost_obj) if source[key].get('groups'): group_obj = session.query(models.HostGroup).filter( models.HostGroup.name.in_( source[key].get('groups'))).all() assert group_obj bindhost_obj.host_groups = group_obj if source[key].get('user_profiles'): userprofile_obj = session.query(models.UserProfile).filter( models.UserProfile.username.in_( source[key].get('user_profiles'))).all() assert userprofile_obj bindhost_obj.user_profiles = userprofile_obj session.commit()
def create_bindhosts(argvs): ''' create bind hosts :param argvs: :return: ''' if '-f' in argvs: bindhosts_file = argvs[argvs.index("-f") +1 ] else: print_err("invalid usage, should be:\ncreate_hosts -f <the new bindhosts file>",quit=True) source = yaml_parser(bindhosts_file) if source: for key,val in source.items(): #print(key,val) host_obj = session.query(models.Host).filter(models.Host.hostname==val.get('hostname')).first() assert host_obj for item in val['remote_users']: print(item ) assert item.get('auth_type') if item.get('auth_type') == 'ssh-passwd': remoteuser_obj = session.query(models.RemoteUser).filter( models.RemoteUser.username==item.get('username'), models.RemoteUser.password==item.get('password') ).first() else: remoteuser_obj = session.query(models.RemoteUser).filter( models.RemoteUser.username==item.get('username'), models.RemoteUser.auth_type==item.get('auth_type'), ).first() if not remoteuser_obj: print_err("RemoteUser obj %s does not exist." % item,quit=True ) bindhost_obj = models.BindHost(host_id=host_obj.id,remoteuser_id=remoteuser_obj.id) session.add(bindhost_obj) #for groups this host binds to if source[key].get('groups'): group_objs = session.query(models.Group).filter(models.Group.name.in_(source[key].get('groups') )).all() assert group_objs print('groups:', group_objs) bindhost_obj.groups = group_objs #for user_profiles this host binds to if source[key].get('user_profiles'): userprofile_objs = session.query(models.UserProfile).filter(models.UserProfile.username.in_( source[key].get('user_profiles') )).all() assert userprofile_objs print("userprofiles:",userprofile_objs) bindhost_obj.user_profiles = userprofile_objs #print(bindhost_obj) session.commit()
def auth_student(): ''' 用户验证 do the user login authentication :return: ''' count = 0 while count < 3: username = input("\033[32;1mUsername:\033[0m").strip() if len(username) == 0: continue password = input("\033[32;1mPassword:\033[0m").strip() if len(password) == 0: continue user_obj = session.query(models.Student).filter( models.Student.username == username, models.Student.password == password).first() if user_obj: return user_obj else: print("wrong username or password, you have %s more chances." % (3 - count - 1)) count += 1 else: print_err("too many attempts.")
def create_users(argvs): ''' create little_finger access user :param argvs: :return: ''' if '-f' in argvs: user_file = argvs[argvs.index("-f") +1 ] else: print_err("invalid usage, should be:\ncreateusers -f <the new users file>",quit=True) source = yaml_parser(user_file) if source: for key,val in source.items(): print(key,val) obj = models.UserProfile(username=key,password=val.get('password')) if val.get('groups'): groups = session.query(models.Group).filter(models.Group.name.in_(val.get('groups'))).all() if not groups: print_err("none of [%s] exist in group table." % val.get('groups'),quit=True) obj.groups = groups if val.get('bind_hosts'): bind_hosts = common_filters.bind_hosts_filter(val) obj.bind_hosts = bind_hosts #print(obj) session.add(obj) session.commit()
def start_session(argvs): print('going to start sesssion ') user = auth() if user: welcome_msg(user) exit_flag = False while not exit_flag: bindhost_ids = display_access_host(user) user_option = input('\033[32;1m%s\033[0m' % ("[%s][(q)quit, select host to login]:")%user.username).strip() if len(user_option) == 0: continue if user_option == 'q': exit_flag = True break if user_option.isdigit(): user_option = int(user_option) if bindhost_ids.index(user_option)>-1: bindhost = session.query(models.BindHost).filter(models.BindHost.id==user_option).first() if bindhost: ssh_login.ssh_login(user,bindhost,session,log_recording) else: print('input error,find any data...') else: print("input error..") else: print("input error..")
def wisdom(): try: wisdom_obj=session.query(models.Wisdom).order_by(func.random()).limit(1).all() if wisdom_obj: print(wisdom_obj[0].sentence) except: print(init_msg)
def auth(): ''' 用户验证 do the user.txt login authentication :return: ''' count = 0 while count < 3: username = input("\033[32;1mUsername>>>:\033[0m").strip() if len(username) == 0: continue password = input("\033[32;1mPassword>>>:\033[0m").strip() if len(password) == 0: continue user_obj = session.query(create_table.UserProfile).filter( create_table.UserProfile.user_name == username, create_table.UserProfile.password == password).first() if user_obj: return user_obj else: print("wrong username or password, you have %s more chances." % (3 - count - 1)) count += 1 else: print_err("too many attempts.")
def bind_group_filter(vals): groups = session.query(models.Group).filter( models.Group.name.in_(vals.get('groups'))).all() if not groups: print_err("none of [%s] exist in groups table." % vals.get('groups'), quit=True) return groups
def user_profiles_filter(vals): user_profiles = ( session.query(models.UserProfile).filter(models.UserProfile.username.in_(vals.get("user_profiles"))).all() ) if not user_profiles: print_err("none of [%s] exist in user_profile table." % vals.get("user_profiles"), quit=True) return user_profiles
def create_users(argvs): if '-f' in argvs: '''首先判断输入是否存在-f选项,将-f后的文件赋予user_file''' user_file = argvs[argvs.index("-f") + 1] else: print_err( "invalid usage, should be:\ncreateusers -f <the new users file>", quit=True) source = yaml_parser(user_file) if source: for key, val in source.items(): print(key, val) obj = models.UserProfile(username=key, password=val.get('password')) if val.get('groups'): '''如果val中含有group,且该group存在,则同时讲该用户加入对应group''' groups = session.query(models.Group).filter( models.Group.name.in_(val.get('groups'))).all() if not groups: print_err("none of [%s] exist in group table." % val.get('groups'), quit=True) obj.groups = groups if val.get('bind_hosts'): '''如果val有bind_hosts,则同时绑定hosts''' bind_hosts = common_filters.bind_hosts_filter(val) obj.bind_hosts = bind_hosts #print(obj) session.add(obj) session.commit()
def show_student_class(user): print('%s 你所在的班级' % user.username) student_class_obj = session.query( models.StudentTeachClass).filter_by(student_qq=user.qq_number).all() for i in student_class_obj: class_teacher_obj = session.query(models.TeacherClass).filter_by( id=i.teacher_course.bind_teacher_class_id).first() course_obj = session.query(models.CourseClassRecord).filter_by( id=i.teacher_course.bind_course_time_id).first() studentname_obj = session.query( models.Student).filter_by(qq_number=i.student.qq_number).first() print('绑定id:%s 课程:%s 课程时间:%s 讲师:%s 教室:%s 学生名:%s 学生qq %s' % (i.id, course_obj.course.coursename, course_obj.course_time.course_time_name, class_teacher_obj.teacher.username, class_teacher_obj.class_room.classname, studentname_obj.username, studentname_obj.qq_number))
def user_profiles_filter(vals): user_profiles = session.query(models.UserProfile).filter( models.UserProfile.username.in_(vals.get('user_profiles'))).all() if not user_profiles: print_err("none of [%s] exist in user_profile table." % vals.get('user_profiles'), quit=True) return user_profiles
def fortress_user_filter(vals): fortress_users = session.query(model_v2.FortressUser).filter( model_v2.FortressUser.username.in_(vals.get('fortress_user'))).all() if not fortress_users: print_err("none of [%s] exist in user_profile table." % vals.get('fortress_user'), quit=True) return fortress_users
def create_bindhosts(argvs): """根据yml文件创建BindHost表中的数据""" if '-f' in argvs: bindhosts_file = argvs[argvs.index("-f") + 1] else: print_err("invalid usage, should be:\ncreate_hosts -f <the new bindhosts file>", quit=True) source = yaml_parser(bindhosts_file) if source: for key, val in source.items(): # print(key,val) host_obj = session.query(models_v2.Host).filter(models_v2.Host.hostname == val.get('hostname')).first() assert host_obj # 断言是否存在这个主机, 如果没有抛出异常不向下执行 for item in val['remote_users']: print(item) assert item.get('auth_type') if item.get('auth_type') == 'ssh-passwd': remoteuser_obj = session.query(models_v2.RemoteUser).filter( models_v2.RemoteUser.username == item.get('username'), models_v2.RemoteUser.password == item.get('password') ).first() else: remoteuser_obj = session.query(models_v2.RemoteUser).filter( models_v2.RemoteUser.username == item.get('username'), models_v2.RemoteUser.auth_type == item.get('auth_type'), ).first() if not remoteuser_obj: # 如果RemoteUser表不存在bindhost.yml文件中的remoteUser, 抛出异常 print_err("RemoteUser obj %s does not exist." % item, quit=True) bindhost_obj = models_v2.BindHost(host_id=host_obj.id, remoteuser_id=remoteuser_obj.id) session.add(bindhost_obj) # for groups this host binds to if source[key].get('groups'): # select * from HostGroup where name in (bjgroup, shgroup); group_objs = session.query(models_v2.HostGroup).filter( models_v2.HostGroup.name.in_(source[key].get('groups'))).all() assert group_objs # 断言 bindhost_obj.host_groups = group_objs # for user_profiles this host binds to if source[key].get('user_profiles'): userprofile_objs = session.query(models_v2.UserProfile).filter(models_v2.UserProfile.username.in_( source[key].get('user_profiles') )).all() assert userprofile_objs # 断言 print("userprofiles:", userprofile_objs) bindhost_obj.user_profiles = userprofile_objs # print(bindhost_obj) session.commit()
def bind_hosts_filter(vals): print('**>', vals.get('bind_hosts')) bind_hosts = session.query(models.BindHost).filter( models.Host.hostname.in_(vals.get('bind_hosts'))).all() if not bind_hosts: print_err("none of [%s] exist in bind_host table." % vals.get('bind_hosts'), quit=True) return bind_hosts
def groups_filter(vals): print('**** groups> ', vals.get('groups')) groups = session.query(models.Group).filter( models.Group.name.in_(vals.get('groups'))).all() if not groups: print_err('none of [%s] exists in group table.' % vals.get('groups'), quit=True) else: return groups
def view_student(): ''' 查看学生 ''' student_obj = session.query(models.Student).filter_by().all() for i in student_obj: # 学生姓名QQ print('现有学生:%s 学生QQ:%s' % (i.username, i.qq_number)) print("----------- END -----------")
def create_bindhosts(bindhost_file): source = yaml_parser(bindhost_file) if source: for key, val in source.items(): host_obj = session.query(models.Host).filter( models.Host.hostname == val['hostname']).first() #print(host_obj.id) for item in val['remote_users']: print(item) if item['auth_type'] == 'ssh-key': remoteuser_obj = session.query( models.RemoteUser).filter( models.RemoteUser.username == item['username'], models.RemoteUser.auth_type == 'ssh-key').first() elif item['auth_type'] == 'ssh-passwd': remoteuser_obj = session.query( models.RemoteUser).filter( models.RemoteUser.username == item['username'], models.RemoteUser.password == item['password']).first() print(remoteuser_obj.id) if (not host_obj) or (not remoteuser_obj): print( 'There is something error between hostname or remote_user.' ) continue bindhost_obj = models.BindHost( host_id=host_obj.id, remoteuser_id=remoteuser_obj.id) session.add(bindhost_obj) if val['groups']: for item in val['groups']: group_obj = session.query(models.Group).filter( models.Group.name.in_(item)).all() bindhost_obj.groups = group_obj if val['user_profiles']: for item in val['user_profiles']: userprofile_obj = session.query( models.UserProfile).filter( models.UserProfile.username.in_(item)).all() bindhost_obj.user_profiles = userprofile_obj session.commit()
def user_profiles_filter(vals): print('**** user_profiles> ', vals.get('user_profiles')) user_profiles = session.query(models.UserProfile).filter( models.UserProfile.username.in_(vals.get('user_profiles'))).all() if not user_profiles: print_err('none of [%s] exists in user_profile table.' % vals.get('user_profiles'), quit=True) else: return user_profiles
def user_profiles_filter(vals): ''' :param vals: :return: ''' user_profiles = session.query(create_table.UserProfile).filter(create_table.UserProfile.user_name. in_(vals.get('user_profiles'))).all() if not user_profiles: print_err("none of [%s] exist in user_profile table." % vals.get('user_profiles'), quit=True) return user_profiles
def bind_hosts_filter(vals): print('**** bind_hosts> ', vals.get('bind_hosts')) #只是为了找出host表中是否有指定的主机名,直接找host表就行 bind_hosts = session.query(models.BindHost).filter( models.Host.hostname.in_(vals.get('bind_hosts'))).all() if not bind_hosts: print_err('none of [%s] exists in bind_host table.' % vals.get('bind_hosts'), quit=True) else: return bind_hosts
def show_class(user): ''' show教室 :param user: :return: ''' print('%s 请参照现有课程教室管理' % user.username) data = session.query(models.ClassRoom).filter_by().all() print('所有班级') for index, x in enumerate(data): print(index, x.classname)
def show_course(user): ''' 展示课程,课程安排,教室 :param user: :return: ''' print('你可以创建班级关系或给学生分配班级') teacher_class_obj = session.query( models.TeacherClass).filter_by(teacher_id=user.id).all() for i in teacher_class_obj: course_teacher_obj = session.query( models.TeacheCourse).filter_by(bind_teacher_class_id=i.id).all() for x in course_teacher_obj: time_course_obj = session.query( models.CourseClassRecord).filter_by( id=x.bind_course_time_id).first() print('课堂ID: %s 课程:%s 课程安排:%s 教室:%s' % (x.id, time_course_obj.course.coursename, time_course_obj.course_time.course_time_name, i.class_room.classname))
def bind_hosts_filter(vals): ''' :param vals: :return: ''' print('**>', vals.get('bind_hosts')) bind_hosts = session.query(create_table.BindHost).\ filter(create_table.Host.host_name.in_(vals.get('bind_hosts'))).all() if not bind_hosts: print_err("none of [%s] exist in bind_host table." % vals.get('bind_hosts'), quit=True) return bind_hosts
def view_student_class(user): ''' 查看该教室的学生,通过学生和老师id反查 :param user: :return: ''' teacher_class_obj = session.query( models.TeacherClass).filter_by(teacher_id=user.id).all() for i in teacher_class_obj: teachecourse_obj = session.query( models.TeacheCourse).filter_by(bind_teacher_class_id=i.id).all() for y in teachecourse_obj: student_teachclass_obj = session.query( models.StudentTeachClass).filter_by( teacher_course_id=y.id).all() for x in student_teachclass_obj: class_teacher_obj = session.query( models.TeacherClass).filter_by( id=x.teacher_course.bind_teacher_class_id).first() course_obj = session.query(models.CourseClassRecord).filter_by( id=x.teacher_course.bind_course_time_id).first() studentname_obj = session.query(models.Student).filter_by( qq_number=x.student.qq_number).first() print('绑定id:%s 课程:%s 课程时间:%s 讲师:%s 教室:%s 学生名:%s 学生qq %s' % (x.id, course_obj.course.coursename, course_obj.course_time.course_time_name, class_teacher_obj.teacher.username, class_teacher_obj.class_room.classname, studentname_obj.username, studentname_obj.qq_number))
def auth(): while 1: user = input('Please enter your username:'******'exit': exit() passwd = input('passwd:') user_obj = session.query(models.UserProfile).filter( models.UserProfile.username == user, models.UserProfile.password == passwd).first() if user_obj: return user_obj else: print("Wrong username or password.")
def audit_recording(argvs): """ audit users records :param argvs: :return: """ if '-u' in argvs: user_name = argvs[argvs.index("-u") + 1] else: print_err("invalid usage, should be:\naudit_user -u <username>", logout=True) return # records = session.query(models.AuditLog).filter( # models.AuditLog.user_id == ( # session.query(models.UserProfile.id).filter_by(username=user_name).first())).all().order_by(id).desc() user_profile = session.query(models.UserProfile).filter_by(username=user_name).first() if not user_profile: print_err("Wrong username...", logout=True) records = user_profile.audit_logs logger.info(records) msg = '''\033[32;1m ---------------------------------------All records of [%s] --------------------------------------- \033[0m''' % user_name print(msg) if records: attributes = ["UserName", "HostName", "IP", "Port", "RemoteUser", "ActionType", "CMD", "DateTime"] table = pylsytable(attributes) for record in records: # record_list = [user_name, # records[0].bind_host.host.hostname, # records[0].bind_host.host.ip, # records[0].bind_host.host.port, # records[0].bind_host.remote_user, # record.action_type.value, # record.cmd, # record.date # ] # print(record_list) # table.append_data(attributes, record_list) table.append_data("UserName", user_name) table.append_data("HostName", records[0].bind_host.host.hostname) table.append_data("IP", records[0].bind_host.host.ip) table.append_data("Port", records[0].bind_host.host.port) table.append_data("RemoteUser", records[0].bind_host.remote_user) table.append_data("ActionType", record.action_type.value) table.append_data("CMD", record.cmd) table.append_data("DateTime", record.date) logger.info(table) else: print("No records for %s" % user_name)
def auth(): """ start session中用户认证操作 """ count = 0 while count < 3: username = input("\033[32;1mUsername:\033[0m").strip() if len(username) == 0: continue password = input("\033[32;1mPassword:\033[0m").strip() if len(password) == 0: continue user_obj = session.query(models_v2.UserProfile).filter(models_v2.UserProfile.username == username, models_v2.UserProfile.password == password).first() if user_obj: return user_obj else: print("wrong username or password, you have %s more chances." % (3 - count - 1)) count += 1 else: print_err("too many attempts.")
def auth(): ''' do the user login authentication :return: ''' count = 0 while count <3: username = raw_input("\033[32;1mUsername:\033[0m").strip() if len(username) ==0:continue password = raw_input("\033[32;1mPassword:\033[0m").strip() if len(password) ==0:continue user_obj = session.query(models.UserProfile).filter(models.UserProfile.username==username, models.UserProfile.password==password).first() if user_obj: return user_obj else: print("wrong username or password, you have %s more chances." %(3-count-1)) count +=1 else: print_err("too many attempts.")
def bind_hosts_filter(vals): print("**>", vals.get("bind_hosts")) bind_hosts = session.query(models.BindHost).filter(models.Host.hostname.in_(vals.get("bind_hosts"))).all() if not bind_hosts: print_err("none of [%s] exist in bind_host table." % vals.get("bind_hosts"), quit=True) return bind_hosts