当前位置 : 主页 > 编程语言 > python >

Python 运维CMD交互控制台 [应用]

来源:互联网 收集:自由互联 发布时间:2022-06-15
通过使用​​Python​​​内置的JSON模块,配合循环分支语句实现的模仿数据库增删改查的这么一个小工具,如下代码我定义了一个默认表,该表结构中​​HostList​​​用来存储主机的

通过使用​​Python​​​内置的JSON模块,配合循环分支语句实现的模仿数据库增删改查的这么一个小工具,如下代码我定义了一个默认表,该表结构中​​HostList​​​用来存储主机的​​UUID​​​号以及账号密码信息,而​​HostGroup​​组则用于存储组名称以及组内成员。

之所以会写这么一个案例,是想让自己熟练使用​​Python​​中的JSON模块,对文本进行灵活的操作,从而锻炼自己的开发水平,这个案例的实际应用并不明朗,只能用作练手,在实际开发中使用SQLite数据库实现起来异常简单。

我的规划是这样的,首先定义​​AdminDataBase()​​​类,此类中定义各种针对数据库的增删改查操作,数据库文件名可以传入构造,这里就暂且命名为​​database.json​​吧。

生成交互Shell环境: 首先需要生成交互式的Shell环境,以此来让用户可以输入命令,实现不同的功能,这里就把完整环境提前拿出来,后期直接使用,不再修改了.

Python 运维CMD交互控制台 [应用]_数据库

实现初始化数据库: 通过定义构造传入数据库名称,然后直接调用​​InitDatabase(self)​​实现初始化数据表结构.

Python 运维CMD交互控制台 [应用]_Python 编程笔记_02

数据库默认生成​​database.json​​,内容如下:

{
"HostList": [
["1000", "127.0.0.1", "username", "password", "22"]
],
"HostGroup": [{
"DefaultGroup": ["1000"]
}]
}

输出主机/主机组列表: 主机列表的数据非常简单,直接调用​​ShowHostList​​方法即可得到全部主机列表,这里不再多说.

Python 运维CMD交互控制台 [应用]_json_03

输出主机组相比于主机列表稍微复杂一些,这里我实现了两个方法,使用​​ShowAllGroup​​​方法可输出所有的主机组和组内主机数,而使用​​ShowGroup​​则可以输出当前数据库中所有的主机组有哪些。

Python 运维CMD交互控制台 [应用]_json_04

实现操作主机记录: 增加与修改主机的实现稍微复杂一些,但相比于删除来说又显得简单,增加主机调用​​AddHost​​方法.

  • 增加主机命令: AddHost --uuid=1001 --address=192.168.1.1 --username=lyshark --password=123123 --port=22

Python 运维CMD交互控制台 [应用]_数据库_05

如上是增加主机,如果我们需要修改特定的主机数据,则可直接调用​​ModifyHost​​方法,该方法通过一个UUID号,完成对主机记录的修改措施,在修改前应该先判断是否存在该序号,从而再决定修改.

  • 修改主机命令:​​ModifyHost --uuid=1000 --address=192.168.1.2 --username=lyshark.com --password=123455 --port=3366​​

Python 运维CMD交互控制台 [应用]_数据库_06

相比于修改主机记录,删除记录则变得异常复杂,原因是主机的删除必须要首先将主机组中的组内序号移除,在移除主机序号的基础上,在对特定主机进行移除,所以难度要比只删除主机记录复杂.

  • 移除主机命令:​​DeleteHost --uuid=1001​​

Python 运维CMD交互控制台 [应用]_json_07

实现操作主机组: 主机组的操作包括两部分,第一是通过调用​​AddHostGroup()​​​向数据库增加一个组,另一个则是调用​​DeleteHostGroup()​​来删除一个主机组,增加删除主机组时也应该考虑好是否存在UUID序号的问题。

如果需要增加一个主机组,可以执行​​AddHostGroup --group_name=MyLyshark​​​增加一个​​MyLyshark​​​的主机组,默认会放入一个​​1000​​主机用户,因为JSON规范,必须保证存在一个节点,不得不增加一个。

Python 运维CMD交互控制台 [应用]_数据_08

当需要删除主机组时,可执行​​DeleteHostGroup --group_name=test​​来删除test组。

Python 运维CMD交互控制台 [应用]_数据_09

给主机组增加/删除主机: 这一部分算是最复杂的部分了,首先我们需要指定一个主机组,然后在指定一个主机的UUID号,我们通过将UUID号增加到特定的组内,来完成对主机的归类操作,增加时可调用​​AddHostGroupOnUUID​​​方法,删除调用​​DeleteHostGroupOnUUID​​实现。

Python 运维CMD交互控制台 [应用]_json_10

实现组内Ping测试: 这部分内容是最有价值的,通过用户传入的一个组名称,循环输出该组内所有的主机数据,并实现Ping检测操作。

例如,当我们需要对​​MyLyshark​​组内的所有主机进行测试时,可执行以下命令实现操作。

  • Ping测试命令:​​PingGroup --group=MyLyshark​​

Python 运维CMD交互控制台 [应用]_Python 编程笔记_11

版权声明:本博客文章与代码均为学习时整理的笔记,文章 [均为原创] 作品,转载请 [添加出处] ,您添加出处是我创作的动力!





【本文转自:国外高防服务器 http://www.558idc.com/usa.html转载请说明出处】
上一篇:Python MySSH 实现剧本执行器
下一篇:没有了
网友评论