Python 运维CMD交互控制台

本文介绍了一个使用Python和JSON模块模拟数据库操作的小工具,包括增删改查等功能,并提供了交互式Shell环境,支持主机和主机组的管理及Ping测试。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

微软技术分享

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值