批量检测端口通不通,不通的时候及时通知相关人员(发短信,向短信平台数据库中插入一条数据)。
24小时只内通知一次
端口大概几百个,不通的情况较少见
问题在于怎么解决24小时内只通知一次
代码已经写成下面这样了,代码参考了一下别人的。
端口存在一个port.txt文件中
格式为:IP空格端口
例如:12.12.23.23 80
-*- coding: utf-8 -*-
"""
Created on Thu Sep 5 10:35:06 2019
@author: citic
"""
import socket,time
import pymssql
import schedule
while 1:
file_obj = open('port.txt')
for line in file_obj:
try:
sc=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
ip = line.split()[0]
port = int(line.split()[1])
print (ip,port)
#设置超时时间(0.0)
sc.settimeout(2)
sc.connect((ip,port))
timenow=time.localtime()
datenow = time.strftime('%Y-%m-%d %H:%M:%S', timenow)
logstr="%s:%s 连接成功->%s \n" %(ip,port,datenow)
print (logstr)
sc.close()
except:
file = open("log.txt", "a")
timenow=time.localtime()
datenow0 = time.strftime('%Y-%m-%d %H:%M:%S', timenow)
logstr="%s:%s 连接失败->%s \n" %(ip,port,datenow0)
print (logstr)
file.write(logstr)
file.close()
#数据库连接
conn=pymssql.connect(host='',user='',password='',database='')
#打开游标
cur=conn.cursor();
if not cur:
raise Exception('数据库连接失败!')
start_time=time.time()
int
def insert():
cur.execute("insert into sendmsg(phone,msg,typecode) values('',%s,'1')",logstr)
schedule.every().day.do(insert)
#int b=(time.time()-start_time).microseconds
#if(b>=86400)
#insert into
conn.commit()
conn.close()
print ("sleep 10.....")
time.sleep(10)