第三周作业HAproxy文件操作
#coding:utf-8 #Author:Mr Zhi """ HAproxy配置文件操作: 1. 根据用户输入输出对应的backend下的server信息 2. 可添加backend 和sever信息 3. 可修改backend 和sever信息 4. 可删除backend 和sever信息 5. 操作配置文件前进行备份 6 添加server信息时,如果ip已经存在则修改;如果backend不存在则创建;若信息与已有信息重复则不操作 配置文件 参考 http://www.cnblogs.com/alex3714/articles/5717620.html """ import shutil def Menu(): #定于关于菜单函数 menu = ( """\033[35;1m 1.增加 2.删除 3.修改 4.查询 \033[0m""") print(menu.strip('\n')) def Backup_proxy(): #定于关于备份文件的函数 shutil.copyfile("HAproxy.conf","HAproxy.conf.bak") def Add_haproxy(): #定义关于增加加数据的函数 domain = input('输入你要添加的域名:') domain_ip = input("输入你要添加的ip:") domain_weight = input("输入weight值:") domain_maxconn = input("输入maxconn值:") Backup_proxy() # 写入数据前执行备份文件的函数 with open("HAproxy.conf","a+",encoding="utf-8") as f: #打开文件追加模式 f_w = "backend %s\n\t\t server %s %s weight %s maxconn %s" % (domain,domain_ip,domain_ip,domain_weight,domain_maxconn) f.write('\n' + f_w), f.flush() ##把数据写入文件 print("\033[36;1m添加成功!\033[0m") def Alter_haproxy(): #定义关于修改数据的函数 domain_old1 = input("输入你要修改的域名:") print(type(domain_old1)) domain_new1 = input("输入新域名:") ip_new1 = input("输入修改后的ip:") weight_new1 = input("输入修改后的weight值:") maxconn_new1 = input("输入修改后的maxconn值:") with open("HAproxy.conf", "r", encoding="utf-8") as f: lines = f.readlines() num = lines.index("backend %s\n" %domain_old1) #赋值域名对应的列表索引号 lines[num] = "backend %s\n" %domain_new1 #根据索引号修改对应的backend lines[num + 1] = "\t\tserver %s %s weight %s maxconn %s\n" % (ip_new1,ip_new1,weight_new1,maxconn_new1) #根据索引号修改对应的server Backup_proxy() # 写入数据前执行备份文件的函数 with open("HAproxy.conf", "w", encoding="utf-8") as f_w: for line in lines: f_w.write(line) #把修改后的列表写入文件中 print("\033[32;1m修改成功!\033[0m") def Search_haproxy(): #定义关于查看数据的函数 domain= input("输入你要查看的域名:") with open("HAproxy.conf", "r", encoding="utf-8") as f: lines = f.readlines() num = lines.index("backend %s\n" %domain) #赋值域名对应的列表索引号 lines[num] = "backend %s\n" %domain #根据索引号修改对应的backend print(lines[num],lines[num + 1]) def Delete_haproxy(): #定义关于删除数据的函数 domain = input("输入你要删除的域名节点:") with open("HAproxy.conf", "r", encoding="utf-8") as f: lines = f.readlines() num = lines.index("backend %s\n" %domain) #赋值域名对应的列表索引号 lines.pop(num) lines.pop(num) #这里不用num + 1,因为上面已经删除了一个索引号 Backup_proxy() # 写入数据前执行备份文件的函数 with open("HAproxy.conf", "w", encoding="utf-8") as f_w: #打开文件 for line in lines: f_w.write(line) print("\033[37;1m删除成功!\033[0m") while True: Menu() number = int(input("input number:")) if number == 1: Add_haproxy() elif number == 2: Delete_haproxy() elif number == 3: Alter_haproxy() elif number == 4: Search_haproxy() else: print("\033[31;1mInput is woring\033[0m") continue
第三周作业HAproxy文件操作的更多相关文章
- 2017-2018-1 20179205《Linux内核原理与设计》第三周作业
<Linux内核原理与分析>第三周作业 教材学习总结 第三章 进程管理 进程是Unix操作系统抽象概念中最基本的一种,是正在执行的程序代码的实时结果:线程,是在进程中活动的对象.而Linu ...
- 第三周作业-课本&&视频学习
<网络攻防技术与实践>第三周作业 Part I 寻找自己留在互联网上的足迹并消除隐私 1.1 google/baidu搜索自己的qq号 搜索结果如图,搜到的有用信息其实就是图上这么几条,能 ...
- 第三周作业、实时操作系统µC/OS介绍及其它内容
作业要求 见<实时控制软件设计>第三周作业 1 阅读笔记--µC/OS 1.1 基本介绍 µC/OS是由Micrium公司研发的实时操作系统,以µC/OS-II或µC/OS-III为内核, ...
- 2017-2018-1 JAVA实验站 第三周作业
2017-2018-1 JAVA实验站 第三周作业 团队展示 队名 JAVA实验站 拟作的团队项目描述 (2048)增加其他模式,使得2048更加丰富多彩 团队的首次合照 团队的特色描述 团队内部很团 ...
- 2019-2020-1 20199329《Linux内核原理与分析》第三周作业
<Linux内核原理与分析>第三周作业 一.上周问题总结: 第二周头脑风暴完成较慢 虚拟机libc配置错误 书本知识使用不够熟练 二.本周学习内容: 1.实验楼环境虚拟一个x86的CPU硬 ...
- JAVA第三周作业(从键盘输入若干数求和)
JAVA第三周作业(从键盘输入若干数求和) 在新的一周,我学习了JAVA的IO编程.下面的代码实现了从键盘输入若干数求和的目标.import java.util.Scanner; public cla ...
- 2018-2019-1 20189221《Linux内核原理与分析》第三周作业
2018-2019-1 20189221<Linux内核原理与分析>第三周作业 实验二 完成一个简单的时间片轮转多道程序内核代码 实验过程 在实验楼中编译内核 编写mymain.c函数和m ...
- 2017-2018-2 1723《程序设计与数据结构》第三周作业 & 实验一 总结
作业地址 第三周作业:https://edu.cnblogs.com/campus/besti/CS-IMIS-1723/homework/1667 提交情况如图: 实验一:https://edu.c ...
- 第三周作业(一)VS安装及单元测试练习
第三周作业(一) 需求:练习教科书第22~25页单元测试练习,要求自行安装Visual Studio开发平台,版本至少在2010以上,要求把程序安装过程和练习过程写到博客上,越详细越好,要图文并茂,没 ...
随机推荐
- apache分割数组和集合的分法
public static void main(String[] agrs){ String[] array={"1","2","", ...
- smali参数引用说明
比如非静态函数test(IJZ)V; p0表示this p1 I p2 J 以此类推
- Django Form(表单)
前台用 get 或 post 方法向后台提交一些数据. GET方法: html示例(保存在templates文件夹中): <!DOCTYPE html> <html> < ...
- response.sendRedirect(url)与request.getRequestDispatcher(url).forward(request,response)的区别
response.sendRedirect(url)跳转到指定的URL地址,产生一个新的request,所以要传递参数只有在url后加参数,如: url?id=1.request.getRequest ...
- 漏洞复现:Struts2 远程代码执行漏洞(S2-033)
docker pull medicean/vulapps:s_struts2_s2-033 docker run -d -p 80:8080 medicean/vulapps:s_struts2_s2 ...
- 关于Sublime Text3的emmet插件和tab快捷键冲突问题
当使用Sublime text3时会遇到快捷键冲突的问题,其中就有安装Emmet之后,tab无法缩进了, 网上有些说看看Browse Packages目录下是否有PyV8插件安装,该插件一般情况下随E ...
- 删掉centos原有的openjdk并安装sun jdk
[环境变量]删掉centos原有的openjdk并安装sun jdk 一.卸载原有openjdk rpm -qa | grep java 之后,将展示出来的全部卸载掉,我这里是5个 rpm -e ...
- jquery $.ajax $.get $.post的区别?
$.ajax 是 jQuery 底层 AJAX 实现,$.ajax是一种通用的底层封装,$.ajax()请求数据之后,则需要使用回调函数,有beforeSend.error.dataFilter.su ...
- sql 查询每科的前三名
废话不多说,直接上脚本 CREATE TABLE [dbo].[Students]( ,) NOT NULL, ) NULL, ) NULL, [score] [int] NOT NULL, CONS ...
- unity之复制文本到剪贴板
代码如下: static void CopyString(string str) { TextEditor te = new TextEditor(); te.text = str; te.Selec ...