定时监测服务器端口,然后将结果入写数据库。

监测用NC命令,入库就用PYTHON的MYSQL模块

再调一个基于函数的多线程。。。

妥妥的。。

是网上两个功能的合成。。

俺不生产代码,俺只是BAIDU的搬运工!

#!/usr/bin/env python 

import multiprocessing
import subprocess
import MySQLdb

host_list = []
for line in open("/xxx/data_ip_port"):
    host_list.append(line.strip('\n'))
if len(host_list) > 10:
    process_number = 10
else:
    process_number = len(host_list) 

def insert_mysql(sql_str):
    try:
        conn=MySQLdb.connect(host='xxxx',user='xxxx',passwd=xxxxxxx',db='xxxx',port=xxxx)
        cur=conn.cursor()
        cur.execute(sql_str)
        cur.close()
    conn.commit()
        conn.close()
    except MySQLdb.Error,e:
         print "Mysql Error %d: %s" % (e.args[0], e.args[1])

def ping_host(ipaddr):
    if subprocess.call('nc -vz -w 2 %s > /dev/null' % ipaddr, shell=True) == 0:
        print '%s is OK' % ipaddr
    ip = ipaddr.split()[0]
    port = int(ipaddr.split()[1])
    sqlstr = "INSERT INTO monitor_crawler (ip,port,status) VALUES ('%s',%d,0)" % (ip, port)
    insert_mysql(sqlstr)
    else:
        print '%s is DOWN' % ipaddr
    ip = ipaddr.split()[0]
    port = int(ipaddr.split()[1])
    sqlstr = "INSERT INTO monitor_crawler (ip,port,status) VALUES ('%s',%d,1)" % (ip, port)
    insert_mysql(sqlstr)

pool = multiprocessing.Pool(processes=process_number)
for ip in host_list:
    pool.apply_async(ping_host,(ip,))
pool.close()
pool.join()

PYTHON--定期监测服务器端口,并将结果写入MYSQL的更多相关文章

  1. python执行shell获取硬件参数写入mysql

    最近要获取服务器各种参数,包括cpu.内存.磁盘.型号等信息.试用了Hyperic HQ.Nagios和Snmp,它们功能都挺强大的,但是于需求不是太符,亦或者太heavy. 于是乎想到用python ...

  2. Python批量检测服务器端口可用性与Socket函数使用

    socket函数 简述 socket又称套间字或者插口,是网络通信中必不可少的工具.有道是:"无socket,不网络".由于socket最早在BSD Unix上使用,而Unix/L ...

  3. 解决python写入mysql中datetime类型遇到的问题

    解决python写入mysql中datetime类型遇到的问题 刚开始使用python,还不太熟练,遇到一个datetime数据类型的问题: 在mysql数据库中,有一个datetime类型的字段用于 ...

  4. (python爬取小故事网并写入mysql)

    前言: 这是一篇来自整理EVERNOTE的笔记所产生的小博客,实现功能主要为用广度优先算法爬取小故事网,爬满100个链接并写入mysql,虽然CS作为双学位已经修习了三年多了,但不仅理论知识一般,动手 ...

  5. 嵌入式web服务器BOA+CGI+HTML+MySQL项目实战——Linux

    准备环境操作系统: Ubuntu12.04 LTS环境搭建: 需要 BOA,Apache,CCGI,MySQL,GCC[Linux下嵌入式Web服务器BOA和CGI编程开发][数据库的相关知识——学习 ...

  6. 将pandas的DataFrame数据写入MySQL数据库 + sqlalchemy

    将pandas的DataFrame数据写入MySQL数据库 + sqlalchemy import pandas as pd from sqlalchemy import create_engine ...

  7. python实现并发服务器实现方式(多线程/多进程/select/epoll)

    python实现并发服务器实现方式(多线程/多进程/select/epoll)   并发服务器开发 并发服务器开发,使得一个服务器可以近乎同一时刻为多个客户端提供服务.实现并发的方式有多种,下面以多进 ...

  8. Python 创建本地服务器环境生成二维码

    一. 需求 公司要做一个H5手机端适配页面,因技术问题所以H5是外包的,每次前端给我们源码,我们把源码传到服务器让其他人访问看是否存在bug,这个不是很麻烦吗?有人说,可以让前端在他们的服务器上先托管 ...

  9. 使用Jmeter监测服务器cpu、内存等性能

    jmeter中可以监控服务器的CPU和内存使用情况,但是需要安装一些插件还需要在被监测服务器上开启服务. 1.下载JMeterPlugins-Standard-1.4.0.zip插件.下载后将JMet ...

随机推荐

  1. Mysql join语句解析

    1. 右连接(right join, right outer join) 解释:以右表(Sys_Employee)为准,而左表(Sys_Department)中的记录只有当其DepartmentId在 ...

  2. Drawer_layout 关闭滑动视图

    在android抽屉Drawer_layout开发中,我需要关闭滑动的试图 找到了这个方法 mDrawer_layout.setDrawerLockMode(DrawerLayout.LOCK_MOD ...

  3. C#读写共享文件夹

    该试验分以下步骤: 1.在服务器设置一个共享文件夹,在这里我的服务器ip地址是10.80.88.180,共享文件夹名字是test,test里面有两个文件:good.txt和bad.txt,访问权限,用 ...

  4. Open-source Project官方地址

    非常遗憾因为这篇博文是专门搜集各个开源项目的各种官方连接地址的,所以链接较多,csdn不同意保存. 请点击这里下载. 因为我的积分不多了,所以这个文档须要一个积分..应该不多吧...确实没有积分的童鞋 ...

  5. 黑白图像(DFS)

    输入一个n*n的黑白图像(1表示黑色,0表示白色),任务是统计其中八连块的个数.如果两个黑格子有公共边或者公共顶点,就说它们属于同一个八连块.如图6-11所示的图形有3个八连块. 图6-11  拥有3 ...

  6. josn 转php

    $data = josn_decode(data,[true]); 加true转化为php数组:不加为对象,使用:$data->'字段'.

  7. 不用jquery等框架实现ajax无刷新登录

    <script type="text/javascript"> window.onload = function () { document.getElementByI ...

  8. 如何在ASP.NET端获取屏幕宽度

    using System.Windows.Forms; 首先引用上面的命名空间. 然后在代码中获取屏幕信息.如下代码: System.Windows.Forms.Screen screen = Sys ...

  9. PHPexcel数据按模板导出

    <?php header("Content-type: text/html; charset=gb2312"); error_reporting(E_ALL); ini_se ...

  10. Photon的log使用

    添加log引用,设置log文件在Photon根目录下的log文件夹内. using ExitGames.Logging;using ExitGames.Logging.Log4Net; public ...