• python自动化运维学习第一天--day1


    学习python自动化运维第一天自己总结的作业


    所使用到知识:
    json模块,用于数据转化
    sys.exit 用于中断循环退出程序
    字符串格式化.format
    字典、文件打开读写
    with open(file,“rw”) as f:
      f.redad/write
    if:循环
    elif:
    else:
    while:循环



    主要想实现目的:
    1.系统默认admin超管用户.超管用户能实现:
      1).查看黑名单用户
      2).使用admin注册新的用户到白名单
      3).解除黑名单的指定用户
    2.用户输入用户名输入3次错误后,锁定最后登录的用户
    3.用户名输入正确,但是密码输入错误3次自动退出程序

    4.白名单默认用户:hujianli 密码:admin#123
             huxiaojian 密码:admin#123
             xiaofei 密码:admin#123 输入白名单用户登录成功报欢迎界面.提供url资料
    5.每次输入用户,首先检测黑名单.在黑名单里面就自动报错.需要解除锁定
    6.自动在同级目录下创建3个文件:分别是: 白名单目录黑名单目录admin超管目录 ==== 没有数据库用本地文件代替,肉有数据库,需要将信息存到数据库

    # -*- coding: utf-8 -*-
    __author__ = 'hujianli'
    import json,os,sys
    super_admin = "该程序为了防止用户记不住密码,初始了一个超管用户,超管用户admin,密码联系管理员询问:"
    name = "请您输入注册后登录网页程序的用户名:"
    passwd = "输入登录用户名所对应的密码: "
    
    
    """ =====================普通用户登录板块======================== """
    wellcome_jm = """	恭喜您登录到本系统,用户名:{},密码{}.登录成功.请您牢记用户名密码, 
    
                    送您一个链接地址: 网盘更新下载地址:    http://pan.baidu.com/s/1sjsFrmX
                    github更新下载地址:  https://github.com/liquanzhou/ops_doc """
    
    
    
    """ ===============超管用户和白名单用户的创建=========="""
    admin_file = "admin.json"
    bmd_file = "baimingdan.json"
    Hmd_file = "heimingdan.txt"
    user_admin = {"admin": "123.com"} # 创建超管用户名称和密码
    
    baimingdan = {"hujianli": "admin#123",
                  "huxiaojian": "admin#123",
                  "xiaofei": "admin#123"}   # 普通登录用户 默认3位
    
    
    if not os.path.isfile(admin_file):
        with open(admin_file, "wt") as f:
            json.dump(user_admin, f)
    
    if not os.path.isfile(bmd_file):
        with open(bmd_file, "wt") as f:
            json.dump(baimingdan, f)
    
    if not os.path.isfile(Hmd_file):
        with open(Hmd_file, "wt") as f:
            f.write("")
    
    # 存储超管用户的用户和密码
    with open("admin.json", "r") as f:
            date = json.load(f)
    date_keys = "".join(date.keys())
    date_values = "".join(date.values())
    
    # 存储白名单的用户和密码
    userlist =[]
    passwdlist = []
    with open("baimingdan.json", "r") as f:
        date_bmd = json.load(f)
    
    
    
    #存储黑名单用户名和密码
    with open("heimingdan.txt", "r") as f:
        heimingdan = f.read().strip("
    ")
    
    
    """ ======================admin板块======================="""
    def admin_mb():
        # cazuolist = []
        quanxian = """
        (1)>>> 查看黑名单用户	 input:1
        (2)>>>使用admin注册新的用户	 input:2
        (3)>>>解除黑名单的指定用户	 input:3
    """
    
        admin_jm = """ 欢迎来到超级管理人登录界面,登录名admin,密码[],您可以有如下权限: 
    %s
    """ % (quanxian)
        print(admin_jm)
        caozuo = int(input("请选择您的操作:"))
        if caozuo == 1:
            print(heimingdan)
    
        elif caozuo == 2:
            add_user = input(name)
            add_passwd = input(passwd)
    
            with open(bmd_file,"r") as f:
                add_info = json.load(f)
    
            if add_info[add_user] not in add_info.keys():
                add_info[add_user] = add_passwd
                with open(bmd_file,"a") as f:
                    json.dump(add_info,f)
            else:
                print("此用户已经存在,请勿重复创建%s!!!"% add_user)
    
        elif caozuo == 3:
            print("解除黑名单的指定用户,这个还没时间写,写法通过删掉黑名单的key和vlan实现")
            sys.exit("退出```````")
        else:
            "error======"
            pass
    
    count = 0
    while count <3:
        count +=1
        username = input(name)
        with open(Hmd_file) as f:
            heimingdan = f.readlines()
        for lock_name in heimingdan:
            lock_name = lock_name.strip("
    ")
            if username == lock_name:
                sys.exit('=======WARNING:该账号 %s 已经被冻结========' % username)
    
        if len(username) == 0 :
            print("33[1;31m用户名不能为空,错误操作33[0m")
            continue
    
    #处理admin用户
        if username == date_keys:
            i = 0
            while i <3:
                i +=1
                passwd_of_user = input(passwd)
                if passwd_of_user == date_values:
                    admin_mb()
                else:
                    if i !=3:
                        print('密码 %s 错误,请好好想想密码,生日或者身份证号码,还有 %d 次机会' % (passwd_of_user,3 -i))
                    else:
                        sys.exit("Sorry,健力提醒:由于您密码输入错误太多,只能退出程序..!!")
        # 处理白名单用户
        for key, value in date_bmd.items():
            if username == key:
                i = 0
                while i <3:
                    i +=1
                    passwd_of_bmd_user = input(passwd)
                    if passwd_of_bmd_user == value:
                        print("===============================================================================================")
                        print("========================================普通用户使用平台========================================")
                        print("===============================================================================================")
                        print(wellcome_jm.format(username, passwd_of_bmd_user))
                        break
                    else:
                        if i !=3:
                            print('密码 %s 错误,请好好想想密码,生日或者身份证号码,还有 %d 次机会' % (username,3 -i))
                        else:
                            sys.exit("Sorry,健力提醒:由于您密码输入错误太多,只能退出程序..!!")
    
        else:
            count !=3
            print("用户输入错误,还有 %d 次机会"%(3-count))
    
    else:
        with open(Hmd_file,"a+") as f:
            f.write(username + "
    ")
        sys.exit("用户%s 达到最大登录次数,请联系超级管理员admin!!' " % username)
    
    
    
    # dict_heimingdan = {}
    # for i in range(1):
    #     name = input(BMD_user)
    #     password = input(BMD_passwd)
    #     if name not in dict_heimingdan.keys():
    #         dict_heimingdan[name] = password
    #
    # with open("heimingdan.json", "wt") as f:
    #      json.dump(dict_heimingdan, f)
    View Code
     





  • 相关阅读:
    [CSP-S模拟测试]:Merchant(二分答案)
    [CSP-S模拟测试]:回文(hash+二维前缀和)
    [CSP-S模拟测试]:排列组合(数学 or 找规律)
    [CSP-S模拟测试]:X国的军队(贪心)
    BZOJ3714 [PA2014]Kuglarz 【最小生成树】
    BZOJ3922 Karin的弹幕 【线段树】
    BZOJ3495 PA2010 Riddle 【2-sat】
    BZOJ2597 [Wc2007]剪刀石头布 【费用流】
    hdu6184 Counting Stars 【三元环计数】
    BZOJ4815 [CQOI2017]小Q的表格 【数论 + 分块】
  • 原文地址:https://www.cnblogs.com/hujianli/p/7096314.html
Copyright © 2020-2023  润新知