IT技术学习之开发(二)

先声个明:

我写技术文章的目的可能就是充个数,因为最近几个月都在钻研技术,没时间思考主要方向。既然花费了大量精力来搞技术,不如当个文章写出来。技术大牛请绕行,初学者可能也学不到什么基本功,就是个个人学习成长血泪史,兴许可以替同路人铺个把个坑儿。

下面继续挖坑儿......

编辑好网页,也添加了伪登陆和跳转页面功能,下面就是从zabbix获取数据的时候了。一开始我以为既然能从zabbix页面上看到数据,那么也可以从网页上拔取,因为我知道了有Python爬虫这种利器,但介于水平太低,一时半会儿学不来。更重要的是,我发现zabbix页面上的数据,尤其是图形上的,都是png格式的图片,无法获取,原来我们看到的实时数据图,是一张一张替换的图片。

于是我就在网上搜zabbix的数据如何获取(虽然是小括号里的内容,但这是相当重要的,当你周围没有技术大牛为你指导时,搜索引擎、技术沟通群、书籍是提升你技术能力的重要途径)。多数是让用zabbix的API接口来调用zabbix数据库,获取想要的数据。下面是一个栗子,左边是调用请求,右边是反馈的信息。

我这一看,输入输出都这么麻烦,虽然我照着网上的贴子做了一份获取组名、主机名、监控项的几个Python脚本,但和我开始想得到的差距略大,图片也是一长串码,不知怎么处理。从本质来说还是对zabbix各项参数、功能不了解,相互之间的关系和作用也不清楚。

我暂时放弃了API这条路,准备进军网上不推荐的数据库路线。大概是在我开始搞zabbix数据库之前,领导让我和数据库工程师搞搞数据库搭运维和优化的测试,我就用Python写了简单的数据库写入脚本。

test是测试代码段的,就不说了,其他的从名字上可以看出大概,create是建表,getkey是保存了数据库登陆的用户名密码,insert是向表插入数据,truncate是清空表里的数据,drop是删除表。

getkey里就放了两个函数,保存用户名和密码,其他脚本链接数据库时调用这里的函数,这样做的目的是如果代码放到别的数据库或更改了用户名密码,只要在这个脚本里更改一次就可以了,省得再每个文件都改一次。

着重来看看create脚本,里面有些知识积累。调用MySQL数据库用的模块包之一就是MySQLdb,也许是我用法不对,调用数据库时还得写SQL语句。可以看到我import了getkey,并在填写登陆信息时调用了用户名和密码两个函数。for循环建立了20个名为"data(1-9999随机数)"的表。我在函数外还定义了全局列表n,本来是用来传递data后面的数字的,插入数据时可以直接用它来指定表名,但不知当时为啥没用上。其他的代码都是连接和调用数据库用的,格式都一样。执行后数据库test1里会创建表,表结构如下。

再来看看insert插入数据的脚本。

tn列表的作用其实就是传递data表名中的数字的,如果import create文件,就可以直接用n了,结果我还写了十来行代码。。。az和AZ的作用是建立一个表,ord是把字符转换成ASCII码,这样range里就包含a到z的数字码,再用map,把这些数字码用chr函数转成字符放入列表里。其实就是懒得打['a','b','c'......'z'],人们就是因为懒才有了技术创新。。在定义函数之前的几行代码就是通过列出数据库中的表,得到上面show tables那张图的数据,然后用正则表达式获取输出中的数字,作为可迭代的正则表达式传给rows,在for循环遍历它的内容,要加group()函数才能得到值,最终保存到tn列表里。

然后就是插入数据的函数,函数传参数TN,就是最下面把tn用for循环传到函数里,也就是每调用一次插入函数,传一个表名的数字,这样就分别给每个表插入了数据。sex用到的随机函数是从m和w里随机选一个。ii是借用for循环的i来填数据的id一项,fn和ln的目的是从AZ中随机取一个字母,从az中随机取0到8个字母,最终组成一个首字母大写的随机字母串。ABCD分别是随机一段字母串,当做文档来增加数据量,最后用SQL语句把这些值插入到表里。栗子如下。

由于ABCD四个部分纯属增加数据量,字符很多,所以就只打印了前面几个值。另外删表、清表就简单了,框架不变,SQL语句就一条。justdoit里面就是调用了create和insert两个函数,一键建表加数据。

等我写完了脚本,同事告诉我网上这类测试数据库的脚本多得是,我才想起来以前我搬机器时听有人说过。。。不过我看了看网上的脚本,内容和我的基本一样,也让我小有成就感。也为我调用zabbix数据库提前练了手。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180529G1ZK2S00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券