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 = """\t恭喜您登录到本系统,用户名:{},密码{}.登录成功.请您牢记用户名密码, \n
- 送您一个链接地址: 网盘更新下载地址: 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("\n")
- """ ======================admin板块======================="""
- def admin_mb():
- # cazuolist = []
- quanxian = """
- (1)>>> 查看黑名单用户\t input:1
- (2)>>>使用admin注册新的用户\t input:2
- (3)>>>解除黑名单的指定用户\t input:3\n"""
- admin_jm = """ 欢迎来到超级管理人登录界面,登录名admin,密码[],您可以有如下权限: \n%s\n""" % (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("\n")
- if username == lock_name:
- sys.exit('=======WARNING:该账号 %s 已经被冻结========' % username)
- if len(username) == 0 :
- print("\033[1;31m用户名不能为空,错误操作\033[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 + "\n")
- 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)
python自动化运维学习第一天--day1的更多相关文章
- Day1 老男孩python自动化运维课程学习笔记
2017年1月7日老男孩python自动化运维课程正式开课 第一天学习内容: 上午 1.python语言的基本介绍 python语言是一门解释型的语言,与1989年的圣诞节期间,吉多·范罗苏姆为了在阿 ...
- Python自动化运维:技术与最佳实践 PDF高清完整版|网盘下载内附地址提取码|
内容简介: <Python自动化运维:技术与最佳实践>一书在中国运维领域将有“划时代”的重要意义:一方面,这是国内第一本从纵.深和实践角度探讨Python在运维领域应用的著作:一方面本书的 ...
- python自动化运维之CMDB篇-大米哥
python自动化运维之CMDB篇 视频地址:复制这段内容后打开百度网盘手机App,操作更方便哦 链接:https://pan.baidu.com/s/1Oj_sglTi2P1CMjfMkYKwCQ ...
- 【目录】Python自动化运维
目录:Python自动化运维笔记 Python自动化运维 - day2 - 数据类型 Python自动化运维 - day3 - 函数part1 Python自动化运维 - day4 - 函数Part2 ...
- python自动化运维篇
1-1 Python运维-课程简介及基础 1-2 Python运维-自动化运维脚本编写 2-1 Python自动化运维-Ansible教程-Ansible介绍 2-2 Python自动化运维-Ansi ...
- Python自动化运维的职业发展道路(暂定)
Python职业发展之路 Python自动化运维工程 Python基础 Linux Shell Fabric Ansible Playbook Zabbix Saltstack Puppet Dock ...
- Python自动化运维 技术与最佳实践PDF高清完整版免费下载|百度云盘|Python基础教程免费电子书
点击获取提取码:7bl4 一.内容简介 <python自动化运维:技术与最佳实践>一书在中国运维领域将有"划时代"的重要意义:一方面,这是国内第一本从纵.深和实践角度探 ...
- python自动化运维之路~DAY5
python自动化运维之路~DAY5 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.模块的分类 模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数 ...
- python自动化运维八:Ansible
Ansible是新出现的自动化运维工具,基于Python研发.糅合了众多老牌运维工具的优点实现了批量操作系统配置.批量程序的部署.批量运行命令等功能.仅需在管理工作站上安装ansible程序配置被管控 ...
随机推荐
- .Net Core中使用ref和Span<T>提高程序性能
一.前言 其实说到ref,很多同学对它已经有所了解,ref是C# 7.0的一个语言特性,它为开发人员提供了返回本地变量引用和值引用的机制. Span也是建立在ref语法基础上的一个复杂的数据类型,在文 ...
- Python爬虫一:爬取上交所上市公司信息
前几天领导让写一个从新闻语料中识别上市公司的方案.上市公司属于组织机构的范畴,组织机构识别属于命名实体识别的范畴.命名实体识别包括人名.地名.组织机构等信息的识别. 要想从新闻语料中识别上市公司就需要 ...
- 【JAVAWEB学习笔记】13_servlet
JavaWeb核心之Servlet 教学目标 案例一.完成用户登录功能 案例二.记录成功登录系统的人次 一.Servlet简介 1.什么是Servlet Servlet 运行在服务端的Java小程序, ...
- 使用xftp将文件上传至云服务器
一.在云服务器配置FTP服务: 1.在root权限下,通过如下命令安装Vsftp(以centos 系统为例): yum install -y vsftpd. 2. 在启动vsftpd服务之 ...
- 《Android进阶》之第六篇 Fragment 的使用2
最近通过学习,对fragment的使用有了新的认识. 一开始接触android的时候,很是受不了这个fragment,总感觉它把一个简单的事情搞复杂啦,所以每次新建工程的时候总是固执的选择empty ...
- 我来说说XML文件中的xmlns、xmlns:xsi和xsi:schemaLocation的具体含义
文章摘自:https://yq.aliyun.com/articles/40353 http://www.cnblogs.com/zhao1949/p/5652167. ...
- xcode实用快捷键
command + R 快速编译并运行项目 command + . 停止正在运行的项目 command + shift + O 快速打开xcode文件搜索功能 command + 0 关闭左边的侧边栏 ...
- 【Netty】codec框架
一.前言 前面已经学习完了Netty框架中的主要组件,接着学习codec框架. 二.codec框架 每个网络应用程序必须定义如何将在对等体之间传输的原始字节解析并转换为目标程序的数据格式,这种转换逻辑 ...
- JavaSE教程-04Java中循环语句for,while,do···while
** Java的循环语句 ** 引入: 生活中有循环,程序的世界也有循环. 思考:生活中有哪些循环的事情? 总结:什么是循环? 重复做类似的事情,而且有终止条件,如果没有终止条件会是怎样? 类似这样的 ...
- 泛型(java菜鸟的课堂笔记)
1. 泛型的简单运 用和意义 2. 泛型的上限与下限 3. 泛型和 子类继承的限制 4. 泛型类和泛型 方法 5. 泛型嵌套和泛型擦除 ...