python通过端口连接和邮件发送实现简单的自动运维(一)

论坛 期权论坛 脚本     
匿名技术用户   2021-1-3 01:24   28   0

前言

由于平时项目较多,每天要查看的服务进程比较多,后来就想通过python定时轮询端口,查看服务进程是不是还在,然后通过邮件发送出来,这样减少工作量。实现的方式是linux服务器(linux自带python)通过socket的模块判断端口连接是否被占用,最后通过smtplib模块及email.mime.text模块完成邮件发送。

引入的相关模块:

import socket
import smtplib
from  email.mime.text import MIMEText

通过socket完成端口的查询

#判断端口是否占用 
def is_open(ip,port):
 s= socket.socket(socket.AF_INET,socket.SOCK_STREAM)
 try:
  s.connect((ip,int(port)))
  #可以连接,然后关闭连接
  s.shutdown(2)
  return True
 except:
  return False

轮询多台服务器的ip端口情况

def is_service_on(hosts,ports):
 result=''
 for port in ports:
  if is_open(hosts, port):
   result=result+hosts+':'+port+' is exit'+'<br />'
  else:
   result=hosts+':'+port+' is not exit'+'<br />'+result
 return result

通过smtplib模块及email.mime.text模块完成邮件发送

#邮件发送 
def send_msg(result,topic):
    #送发方的邮箱
 msg_from=".......@qq.com"
    #密码,不是邮件的密码,要在自己的邮件里设置
 pwd="........"
    #接收方的邮箱
 to=".....@....com"
    #邮件的题目
 subject="服务端口情况"
    #邮件的内容
 content="<h1>"+"服务的端口情况如下:"+"<br />"+result+"</h1>"

 #构造邮件,按html的方式输出
 msg=MIMEText(content,"html","utf-8")
 msg["Subject"]=subject
 msg["From"]=msg_from
 msg["To"]=to
    
    #发送邮件
 try:
  ss=smtplib.SMTP_SSL("smtp.qq.com",465)
  ss.login(msg_from,pwd)
  ss.sendmail(msg_from,to,msg.as_string())
  ss.quit()
  print ('send suessfully')
  return True
 except smtplib.SMTPException as e:
  print (e)
  return False

最后通过主函数串连某个程序

if __name__ == '__main__': 
 #第一台服务器的ip及端口
    host_2 = '127.0.0.1'
    port_2 = ['3306','28688' ]
#第二台服务器的ip及端口
    host_3 = '127.0.0.1'
    port_3 = ['3306','1521','8385','8088','28688','8161','4366','8081']
#第三台服务器的ip及端口
    host_5 = '127.0.0.1'
    port_5 = ['8385','8099','8388','8080']

#
    result=''
    topic=''

    result=result+is_service_on(host_2,port_2)
    result=result+is_service_on(host_3,port_3)
    result=result+is_service_on(host_5,port_5)

    if (result.find("not") != -1):
     topic="存在问题"
    else:
     topic="正常"
    send_msg (result,topic)

源码下载地址http://download.csdn.net/download/shirenkan/11992399,也包括内存查寻部分

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP