09/28/14

【python】paramiko和pexpect运维批量脚本

batch_ssh功能介绍:

### 执行批量命令 调用方式
batch_iplist(“iplist.txt”,’who’,”root”,”/root/.ssh/id_rsa”,60,”command.txt”,True)
### 执行单个命令 调用方式
batch_iplist(“iplist.txt”,’who’,”root”,”/root/.ssh/id_rsa”,60,”command.txt”,False)
### iptable 功能模块
1、通过读取iptable_iplist_file.txt文件中ip列表,批量封禁IP
python2.6 batch_ssh.py -I –iptable_config_ini=iptable_config.ini –sub_domain=www.phpdba.com –iptable_iplist_file=iptable_iplist_file.txt
2、直接通过-s将要封禁IP,传入脚本
python2.6 batch_ssh.py -I –iptable_config_ini=iptable_config.ini –sub_domain=www.phpdba.com -s 123.123.123.123
3、同时封禁iptable_iplist_file.txt和-s指定IP
python2.6 batch_ssh.py -I –iptable_config_ini=iptable_config.ini –sub_domain=www.phpdba.com -s 123.123.123.123 –iptable_iplist_file=iptable_iplist_file.txt

### 批量执行命令模块
1、以dev 权限登录iplist.txt中ip,同时批量执行command.txt中定义系列命令及command定义命令
python2.6 batch_ssh.py -B –batch_iplist_file=iplist.txt –batch_commandlist_file=command.txt –command=”ps aux|grep python” –batch_user=dev –batch_auth_key=dev_id_rsa
2、以dev 权限登录iplist.txt中ip,执行command.txt中系列命令
python2.6 batch_ssh.py -B –batch_iplist_file=iplist.txt –batch_commandlist_file=command.txt –batch_user=dev –batch_auth_key=dev_id_rsa
3、以dev权限登录iplist.txt中ip,只执行command定义命令
python2.6 batch_ssh.py -B –batch_iplist_file=iplist.txt –command=”ps aux|grep python” –batch_user=dev –batch_auth_key=dev_id_rsa
4、以root权限登录iplist.txt中ip,批量执行command.txt文件中定义的系列命令
python2.6 batch_ssh.py -B –batch_iplist_file=iplist.txt –batch_commandlist_file=command.txt
5、以root权限登录iplist.txt中ip,执行command定义的命令
python2.6 batch_ssh.py -B –batch_iplist_file=iplist.txt –command=”ps aux|grep python”
6、以root权限登录iplist.txt中ip,同时批量执行command.txt中定义系列命令及command定义命令
python2.6 batch_ssh.py -B –batch_iplist_file=iplist.txt –batch_commandlist_file=command.txt –command=”ps aux|grep python”
### 批量获取mysql信息
1、以root权限登录iplist.txt中ip,批量执行command.txt文件中定义的系列命令
python2.6 batch_ssh.py -M –batch_iplist_file=iplist.txt –batch_commandlist_file=command.txt

源码:https://github.com/chen-123/phper/blob/master/运维工具/python/batch_ssh.py

09/25/14

【DNS】构建基于bind的智能dns系统的思考

一、名词说明

1、域名即Domain Name,是由一串用点号分隔的名称组成的Internet上某台计算机或者计算机组名称。域名即是一个IP的别名,方便记忆。
2、DNS是Domain Name System的缩写,即域名系统。
3、Bind是遵循dns协议的开源软件,可用来响应客户端dns解析请求。

二、DNS 域名描述

1、网络中任何一台dns服务器都不可能记录所有主机域名记录,就算有如此牛逼的服务器,所有域名解析都到这台服务器。且不说硬件是否杠得住,带宽、解析速度呢?所以,dns系统必然是分布式结构。
2、域名一般可分为顶级域名、二级域名、三级域名,顶级域名,一般是指com、cn、net等国际顶级域名;以及cn、us等国家顶级域名。二级域名,一般是需要在Inter NIC(网络信息中心)进行注册取得,比如:phpdba、chen-123等。三级域名用字母( A~Z,a~z,大小写等)、数字(0~9)和连接符(-)组成,各级域名之间用实点(.)连接,三级域名的长度不能超过20个字符。
3、从域名分类可知,DNS系统可分为根域名服务器,主要负责解析顶级域名,只允许授权查询;主域名服务器,即自行搭建或者使用第三方服务器,负责解析注册申请的二级域名下索引域名解析请求,自行维护,须在域名注册商修改NS记录进行授权;
缓存域名服务器,主要是指各电信运营商ISP或者组织搭建的dns服务器,此类dns服务器会缓存该运营商下所有请求的dns记录,更快的响应。

三、智能DNS系统描述(以bind为例)

1、智能DNS系统,最基本的功能是可以根据用户所在区域,将不同区域的解析请求,分别解析到不同的ip地址。这样,如果用户是江西用户的话,智能dns系统就将该用户请求到指向江西IDC节点,让用户能更快的访问我们网站资源。
2、基于bind的智能dns系统,主要是使用View功能,同步配置不同的acl及不同的zone文件,从而实现不同区域解析不同IP
的目的。

四、构建智能DNS系统的问题

1、各区域各ISP运营商的IP收集费劲,而且准确性能保障,要不段优化。比如:设置dns服务器:218.1.135.1,但请求过来的不是这个IP,基于dns系统分布式特点,218.1.135.1dns服务器是无锡某dns服务器的从服务器或者缓存(转发)服务器。
2、同一DNS服务器,多个ISP服务器公用问题,这时,服务器解析比较难界定。
3、dns服务器被攻击问题。

五、区域ip获取途径

1、程序抓取
2、脚本分析IP纯真数据库获取
3、bind 日志收集ip

09/24/14

【MySQLMTOP】分布式部署版本

基于MySQLMTOP 开源mysql监控系统v2.1,进行了更新的内容如下:

1、全局配置添加了报警时间段设置。根据对项目分级归类,设置默认报警时间段。
2、应用管理中添加了管理员邮箱项。通过管理员邮箱设置,可将mysql监控情况抄送给项目负责人。
3、主机管理中添加了主机别名、机房、告警时间段三项。主机别名(一般设置外网IP,无外网IP设置内网IP),告警时间段未设置,则使用全局默认时间段。

代码位置:https://github.com/chen-123/phper/tree/master/mysqlmtop