使用python检测主机存活端口及检查存活主机


Posted in Python onOctober 12, 2015

监测主机存活的端口

#!/usr/bin/env python
# coding-utf
import argparse
import socket
import sys
#author: wolf_ribble
def scan_ports(host,start_port,end_port):
  """Scan remote hosts"""
  try:
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  except socket.error,error_msg:
    print 'Socket creation failed.Error code:' + str(error_msg[]) + 'Erroe message:' + error_msg[]
    sys.exit()
  try:
    remote_ip = socket.gethostbyname(host)
  except socket.error,error_msg:
    print error_msg
    sys.exit()
  end_port +=
  for port in range(start_port,end_port):
    try:
      sock.connect((remote_ip,port))
      print 'Port' + str(port) + 'is ipen'
      sock.close()
      sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    except socket.error,error_msg:
      #print error_msg
      pass
if __name__ == '__main__':
  parser = argparse.ArgumentParser(description='remote port scaner')
  parser.add_argument('--host',action="store",dest="host",default='www.wealink.com')
  parser.add_argument('--start-port',action="store",dest="start_port",default='',type=int)
  parser.add_argument('--end-port',action="store",dest="end_port",default='',type=int)
  given_args = parser.parse_args()
  host, start_port ,end_start = given_args.host , given_args.start_port,given_args.end_port
  scan_ports(host,start_port,end_start)

使用python 检查存活主机

这里的设备对存活状态不是很敏感,就使用了脚本来检测存活状态,之前用shell做了一个,实现的功能是使用Ping命令检测服务器存活,不在线会将不在线的服务器及IP通过邮件发送提醒,现在在学习python,改了一个python版本。需要检测的主机我存储在/scrip/host中,格式为:

HOST  IP

好了,废话少说,上脚本:

#coding=utf-8
import subprocess
import os,time,sys,re
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
server=smtplib.SMTP('smtp.126.com')
start_Time=time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))
mj=open('/scrip/host','r')
mi=open('/scrip/text','w')
mihost=mj.readlines()
mj.close()
online=[]
i=0
for i in range(len(mihost)):
  host=mihost[i][0:14].strip()
  ip=mihost[i][14:].strip()
  p = subprocess.Popen(["ping -c 1 -i 0.2 -W 3 "+ ip],
              stdin = subprocess.PIPE,
              stdout = subprocess.PIPE,
              stderr = subprocess.PIPE,
              shell = True)
  out = p.stdout.read()
  regex = re.compile("time=\d*", re.IGNORECASE | re.MULTILINE)
  if len(regex.findall(out)) > 0:
     online.append(host)
  else:
    fail_host =host + ' \t'+ ip
    mi.write(fail_host)
    mi.write('\n')
mi.close()
fail=open('/scrip/text','r')
number=fail.readlines()
fail_host=''.join(number)
context = 'Scan Time:' + '\t '*2 +' ' *3 + start_Time +'\n'+ 'Not Online Devices:' +'\t'+ repr(len(number)) +'\n'+ '\n' +'HOST' + ' '*12 + 'I P' + '\n' + fail_host
msg = MIMEMultipart('alternative')
msg['Subject'] = 'Not Online Device'
part = MIMEText(context, 'plain', 'utf-8')
msg.attach(part)
server=smtplib.SMTP('smtp.126.com')
server.login("邮箱用户名","邮箱密码")
maillist=['接收邮箱',]
server.sendmail("发送邮箱地址",maillist,msg.as_string())

运行的结果:

使用python检测主机存活端口及检查存活主机

Python 相关文章推荐
python实现统计代码行数的方法
May 22 Python
linecache模块加载和缓存文件内容详解
Jan 11 Python
Python使用pyodbc访问数据库操作方法详解
Jul 05 Python
flask框架中勾子函数的使用详解
Aug 01 Python
Python3中列表list合并的四种方法
Apr 19 Python
如何基于Python实现自动扫雷
Jan 06 Python
Tensorflow与Keras自适应使用显存方式
Jun 22 Python
解决keras使用cov1D函数的输入问题
Jun 29 Python
Keras 中Leaky ReLU等高级激活函数的用法
Jul 05 Python
Python常用数字处理基本操作汇总
Sep 10 Python
flask项目集成swagger的方法
Dec 09 Python
Python  Asyncio模块实现的生产消费者模型的方法
Mar 01 Python
分享一下Python 开发者节省时间的10个方法
Oct 02 #Python
Python监控主机是否存活并以邮件报警
Sep 22 #Python
Python二分查找详解
Sep 13 #Python
基python实现多线程网页爬虫
Sep 06 #Python
python杀死一个线程的方法
Sep 06 #Python
在Python的Flask框架中验证注册用户的Email的方法
Sep 02 #Python
Python实现身份证号码解析
Sep 01 #Python
You might like
一个用于网络的工具函数库
2006/10/09 PHP
php生成随机颜色方法汇总
2014/12/03 PHP
学习php设计模式 php实现模板方法模式
2015/12/08 PHP
Yii2实现上下联动下拉框功能的方法
2016/08/10 PHP
javascript的数据类型、字面量、变量介绍
2012/05/23 Javascript
js动态在form上插入enctype=multipart/form-data的问题
2012/05/24 Javascript
js Dialog 实践分享
2012/10/22 Javascript
jQuery内部原理和实现方式浅析
2015/02/03 Javascript
JavaScript获取页面中超链接数量的方法
2015/11/09 Javascript
JavaScript类的写法
2016/09/17 Javascript
IE8利用自带的setCapture和releaseCapture解决iframe的拖拽事件方法
2016/10/25 Javascript
JS短信验证码倒计时功能的实现(没有验证码,只有倒计时)
2016/10/27 Javascript
jQuery使用ajax方法解析返回的json数据功能示例
2017/01/10 Javascript
使用淘宝镜像cnpm安装Vue.js的图文教程
2018/05/17 Javascript
详解Vue CLI 3.0脚手架如何mock数据
2018/11/23 Javascript
JavaScript原型对象原理与应用分析
2018/12/27 Javascript
three.js利用gpu选取物体并计算交点位置的方法示例
2019/11/25 Javascript
vue print.js打印支持Echarts图表操作
2020/11/13 Javascript
[58:21]DOTA2亚洲邀请赛 4.3 突围赛 Liquid vs VGJ.T 第二场
2018/04/04 DOTA
python编程-将Python程序转化为可执行程序[整理]
2007/04/09 Python
python访问纯真IP数据库的代码
2011/05/19 Python
python基础教程之自定义函数介绍
2014/08/29 Python
使用Python的Twisted框架实现一个简单的服务器
2015/04/16 Python
python冒泡排序简单实现方法
2015/07/09 Python
Python编程使用*解包和itertools.product()求笛卡尔积的方法
2017/12/18 Python
TensorFLow用Saver保存和恢复变量
2018/03/10 Python
Pycharm设置界面全黑的方法
2018/05/23 Python
python中单例常用的几种实现方法总结
2018/10/13 Python
python 执行文件时额外参数获取的实例
2018/12/18 Python
Python标准库shutil模块使用方法解析
2020/03/10 Python
解决python ThreadPoolExecutor 线程池中的异常捕获问题
2020/04/08 Python
手对手的教你用canvas画一个简单的海报的方法示例
2018/12/10 HTML / CSS
美国瑜伽服装和装备购物网站:Mukha Yoga
2019/02/22 全球购物
2014年元旦活动方案
2014/02/15 职场文书
励志演讲稿范文
2014/04/29 职场文书
护理专业自我评价
2015/03/11 职场文书