很早之前写过一个篇 利用pwgen、mkpasswd、tr自动更改密码 ,后来又狗尾了篇用Linux命令行生成随机密码的十种方法 。前面至少还算是个系统功能,后面越来越写越成烂大街的东西了。即然再烂了,不怕再加一个python版的生成随机密码的篇幅。 一、版本1 先来个详述版的,这里相当于……
Continue reading
hashlib模块是python2.5 以后出现的一个包,其主要涉及安全和加密。而且hashlib 得到openssl 的“支持” ,其支持openssl 库提供的所有算法,具体包括md5、sha1、sha224、sha256、sha512等。详细用法,可以通过pydoc hashlib 查看,这里结合两……
Continue reading
什么是闭包? 借用维基上解释:在计算机科学中,闭包(Closure)是词法闭包(Lexical Closure)的简称,是引用了自由变量的函数。这个被引用的自由变量将和这个函数一同存在,即使已经离开了创造它的环境也不例外。所以,有另一种说法认为闭包是由函数和与其相关的引用环境组合而成……
Continue reading
在我们维护系统时,需要把系统的报警信息即时传递给相应同学,如果把联系方式直接写到脚本里,对以后的维护变更将埋下祸根,尤其是成百上千的系统。为此这里写了个获取联系人信息的API 。 数据库配置中心表: 1CREATE TABLE `db_alertcontact` ( 2 `id` INT(11) NULL DEFAULT NULL, 3 `levelid` INT(11) NULL DEFAULT NULL COMMENT 'contact level', 4 `contact` VARCHAR(50) NULL DEFAULT NULL COMMENT 'email or phone information', 5 `type` VARCHAR(50) NULL DEFAULT NULL COMMENT 'phone/email', 6 `username` VARCHAR(100) NULL DEFAULT……
Continue reading
现网的主机,业务侧发来有一台未同步。之前也遇到类似的问题,一般都是ntp dead,造成时间未同步。这台经查看ntp服务运行正常。 1www.361way.com:~ #:~ # rcntp status 2Checking for network time protocol daemon (NTPD): running 通过ntpq命令查看发现和ntp对时服务器时间相差3万多秒: 1www.361way.com:~ # ntpq -p 2remote refid st t when poll reach delay offset jitter 3============================================================================== 410.211.57.78 10.70.91.148 3 u 61 64 377 1.180 -320041 1785.59 显然,这个误差已……
Continue reading
sysstat工具包是一个linux下性能分析基本必备的,而通过里面的sa1工具可以实现将当前的性能数据记录到文件中,便于性能回溯。不过文本性的东西虽然能看到具体指标的值 ,不过总归没有图形化的东西来的直观。这里就结合sysstatgraph为例,对sa1的结果进行查看分析。 一、环……
Continue reading
一、故障现象 3月16号22:20分左右,手机收到现网主机的宕机拨测短信告警。收到宕机短信本属正常,现网业务有二千多台 server 难保其中哪台不出问题。可是还未能赶着打开电脑,紧接着同一时间又是8台主机的宕机短信。未查看工程文档核对主机之前,猜测怀疑是某一刀框出了问题,导致同一机框内的所有刀……
Continue reading
了解并使用check_mk 已经有一两年了,并未深扒过其代码。由于近一年开始会写一些python 代码,在研究socket模块时,想到之前的check_mk 模块,本篇着重分析C/S 之间是如何交互数据的。 一、check_mk-agent与server端 默认在被监控主机上,只需要安装一个……
Continue reading
实现目标: 通过控制端,可以实现N台主机执行同一操作。 具体代码如下: 1、控制端代码 1[root@361way tmp]# vim client.py 2#!/usr/bin/env python 3import socket,os,sys 4 ost=sys.argv[1] 5▽ort=4567 6for host in os.popen('cat ip.list').readlines(): 7 print host 8 s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) 9 s.connect((host,port)) 10 while 1: 11 data=sys.argv[2] 12 if not data: 13 break 14 s.sendall(data) 15 data=s.recv(1024) 16 if not data: 17 break 18 print data 19 s.close() 2、被控制端代码 1[root@localhost tmp]# vim server.py 2#!/usr/bin/env python 3import socket,os 4host='' 5port=4567 6s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) 7s.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1) 8s.bind((host,port)) 9s.listen(1) 10print "Server is running on port %d; press ctrl-c to terminate." % port 11while 1: 12 clientsock,clientaddr=s.accept() 13 print "connect……
Continue reading
python利用SocketServer和multiprocessing实现传输监控数据,分为服务端和客户端,这里通过pickle模块实现数据的条带化,减少空间的占用。由于只是出于演示,这里只传uptime的值过去。 一、服务端 1#!/usr/bin/env python 2import multiprocessing 3import os,sys 4import SocketServer,time 5import pickle 6class MyTCPHandler(SocketServer.BaseRequestHandler): 7 def handle(self): 8 print 'got a connection from:',self.client_address[0] 9 self.data = self.request.recv(1024).strip() 10 if……
Continue reading