python脚本监控windows主机的端口,并发送结果到linux主机
#coding=gbk
#-*- coding:utf-8 -*-
#auth chenzelin
import psutil
import ftplib
import sys
import time
import os
import socket
import telnetlib
saveFilePath = "E:\\agent\\winAgent\\temp" #本地文件保存的路径,需要修改
file_time = time.strftime('%Y%m%d%H%M%S',time.localtime())
logdate = time.strftime("%Y-%m-%d", time.localtime())
proc_list=[]
def getIp():
try:
s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
s.connect(('6.6.6.6',32456))
ip=s.getsockname()[0]
finally:
s.close()
return ip
#print(getIp())
def ftpupload(localPath, serverPath):
host = '192.168.142.112' #远程LINUX主机IP,需要修改
username = 'workftp' #远程LINUX主机用户,需要修改
password = 'ftp63FTP' #远程LINUX主机用户密码,需要修改
try:
f = ftplib.FTP(host) # 实例化FTP对象
f.login(username, password) # 登录
bufsize = 1024 # 设置缓冲器大小
fp = open(localPath, 'rb+')
f.storbinary('STOR ' + serverPath, fp, bufsize)
fp.close()
f.quit()
except Exception as err:
print(err)
def get_ip_status(ip,port):
tn = telnetlib.Telnet()
try:
tn.open(ip,port)
#s.connect((address,port))
return "UP"
except:
return "DOWN"
finally:
tn.close()
ip = '192.168.142.113'
port = 3306
tn=get_ip_status(ip,port)
localPath = os.path.join(saveFilePath,file_time+'_'+getIp()+'_port.tok')
with open(localPath,'a') as f:
#输出结果写入到tok文件
f.write('telnet端口状态为:'+tn+'|'+file_time+'\r\n')
f.close
serverPath = '/home/czl/monitor/' + file_time+'_'+getIp()+'_port.tok'
ftpupload(localPath, serverPath)
#删除生成的tok文件,先注释此行,监控采上数据后再把#去掉
os.remove(saveFilePath+"\\"+file_time+'_'+getIp()+'_242port.tok')