背景
公司有600多台服务器,打算写一个小程序,能一眼看见哪些服务器不在线。
大体思路是:
1、把所有服务器ip存进数据库,ping命令判断服务器是否在线
2、更新数据库中ip的状态
3、简单的web显示出来
4、优化程序,美观页面
一、python检测IP在线
fping命令,它是对一个文件的批量ping,瞬间完成的,如果ping不通,那就较慢,日常ping不通的毕竟是少数,所以这个非常适用。
这个命令需要安装,直接yum就行,yum install fping -y
创建fping.sh的shell脚本
#!/bin/bash
rm -f result.txt
cat ipmi_ping.txt | fping > result.txt
执行结果:
二、读取mysql数据
1、创建一张数据表,存放ip等信息
#创建一个表
create table ip_table(
id int auto_increment, #id自增
ipaddress char(15) not null, #地址禁止为空
application char(24),
status char(6),
primary key(id)
);
#插入部分数据
insert into ip_table values(id,'10.30.0.101','邮箱服务器','在线');
insert into ip_table values(id,'10.1.100.1','核心交换机','在线');
insert into ip_table values(id,'10.1.50.30','开发库','在线');
insert into ip_table values(id,'10.1.80.115','openstack控制节点','在线');
insert into ip_table values(id,'10.1.80.116','openstack计算节点','在线');
insert into ip_table values(id,'10.1.80.117','openstack块存储节点','在线');
commit;
2、python实现读取数据表中的内容,并写入到一个本地文件
# -*- coding:utf-8 -*-
import pymysql
def get_loan_number(file):
connect = pymysql.connect(
host="10.1.80.200",
port=3306,
user="alex",
passwd="alex",
db="ip",
charset='utf8'
)
print("写入中,请等待……")
cursor = connect.cursor() #获取游标