PYTHON--定期监测服务器端口,并将结果写入MYSQL

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

监测用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()

 

时间: 2025-01-20 07:27:28

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

使用Python编写Storm程序,无法将结果写入MySQL

问题描述 使用Python编写Storm程序,无法将结果写入MySQL 我使用Python作为编程语言写一个关联关系挖掘的程序部署在Storm集群,将jar包提交到集群后无法将结果写入数据库,贴上写入结果的bolt代码,希望大家帮忙看看,不胜感激: #coding=utf-8 import MySQLdb import logging from pyleus.storm import SimpleBolt log = logging.getLogger('log_results') def wr

python检测远程服务器tcp端口的方法_python

本文实例讲述了python检测远程服务器tcp端口的方法.分享给大家供大家参考.具体如下: python检测远程服务器tcp端口的代码,这段代码可以用来做服务器监控实用 #!/usr/bin/env python #coding:utf-8 #filename:tcp.py ''' author: gavingeng date: 2011-12-14 09:35:59 ''' import socket import sys NORMAL=0 ERROR=1 TIMEOUT=5 def ping

PHP通过SQL语句将数据写入MySQL数据库指定的表

PHP向MySQL数据库中写入数据有三个步骤: 1,PHP和MySQL建立连接关系 2,打开MySQL数据库 3,接受页面数据,PHP录入到指定的表中 1.2两步可直接使用一个数据库链接文件即可:conn.php <?php mysql_connect("localhost","root","");//连接MySQL mysql_select_db("hello");//选择数据库 ?> 当然,前提是已经安装WEB

详解Python程序与服务器连接的WSGI接口

  这篇文章主要介绍了Python程序与服务器连接的WSGI接口,是Python网络编程学习当中的重要内容,需要的朋友可以参考下 了解了HTTP协议和HTML文档,我们其实就明白了一个Web应用的本质就是: 浏览器发送一个HTTP请求; 服务器收到请求,生成一个HTML文档; 服务器把HTML文档作为HTTP响应的Body发送给浏览器; 浏览器收到HTTP响应,从HTTP Body取出HTML文档并显示. 所以,最简单的Web应用就是先把HTML用文件保存好,用一个现成的HTTP服务器软件,接收

故障排查:是什么 导致了服务器端口telnet失败?(转)

  telnet命令的主要作用是与目标端口进行TCP连接(即完成TCP三次握手).当服务端启动后,但是telnet其监听的端口,却失败了.或者,当服务端运行了一段时间后,突然其监听的端口telnet不通了.当类似这样的telnet失败的情况出现时,都可以按照如下方面进行排查: 1.观察一下服务端进程的CPU和内存是否有异常. 比如,当CPU持续在100%时,就有可能导致来自客户端的TCP连接请求被丢弃或无暇处理.  2.端口监听器是否运行正常? 可以通过IRapidServerEngine的Ad

Phpstudy做服务器,android连接mysql数据库,不能连接已经写好的php

问题描述 Phpstudy做服务器,android连接mysql数据库,不能连接已经写好的php 在浏览器处输入(http://127.0.0.1/test.php)能够成功访问,但用android通过getHTTP访问该地址就被拒绝,同样的语句访问别的地址就没问题,请问各位大神有可能是哪里出了错呢,我是个小白,刚刚接触各种服务器和android不久,还希望各位赐教,谢谢了~ 解决方案 检查下你的服务器防火墙是否允许远程访问80端口 解决方案二: 首先你要满足你的手机与你的电脑是在同一个局域网内

Php连接及读取和写入mysql数据库的常用代码_php技巧

既然现在你看到了这篇文章,说明你肯定知道PHP和MySQL是怎么一回事,我就不啰嗦了.但为什么你还要继续阅读此文呢?可能是以前你习惯复制粘贴一些代码,并没有真正弄懂代码的含义:也可能你以前弄懂了,但像我一样,有一段时间没有接触,生疏了:再或者,有人问你类似的简单问题,而你已经不屑于回答,直接上网搜索,恰好找到了这篇,于是就推荐给那谁谁谁了... 不管怎样,在这里我总结了常用的PHP连接MySQL数据库以及读取写入数据库的方法,希望能够帮到你,当然也是作为我自己的一个回顾总结. 1.为了更好地设置

故障排查:是什么 导致了服务器端口telnet失败?

      telnet命令的主要作用是与目标端口进行TCP连接(即完成TCP三次握手).       当服务端启动后,但是telnet其监听的端口,却失败了.或者,当服务端运行了一段时间后,突然其监听的端口telnet不通了.当类似这样的telnet失败的情况出现时,都可以按照如下方面进行排查: 1.观察一下服务端进程的CPU和内存是否有异常.        比如,当CPU持续在100%时,就有可能导致来自客户端的TCP连接请求被丢弃或无暇处理.  2.端口监听器是否运行正常?        

服务器端口

服务器端口 端口:0 服务:Reserved 说明:通常用于分析操作系统.这一方法能够工作是因为在一些系统中"0"是无效端口,当你试图使用通常的闭合端口连接它时将产生不同的结果.一种典型的扫描,使用IP地址为0.0.0.0,设置ACK位并在以太网层广播. 端口:1 服务:tcpmux 说明:这显示有人在寻找SGI Irix机器.Irix是实现tcpmux的主要提供者,默认情况下tcpmux在这种系统中被打开.Irix机器在发布是含有几个默认的无密码的帐户,如:IP.GUEST UUCP