使用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 网络编程起步(Socket发送消息)
Sep 06 Python
Python中for循环控制语句用法实例
Jun 02 Python
Python存取XML的常见方法实例分析
Mar 21 Python
python3实现抓取网页资源的 N 种方法
May 02 Python
python 中random模块的常用方法总结
Jul 08 Python
Python 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)
Mar 19 Python
查找python项目依赖并生成requirements.txt的方法
Jul 10 Python
python跳过第一行快速读取文件内容的实例
Jul 12 Python
python使用Matplotlib绘制分段函数
Sep 25 Python
浅谈python图片处理Image和skimage的区别
Aug 04 Python
基于Python获取照片的GPS位置信息
Jan 20 Python
python实现的人脸识别打卡系统
May 08 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
PHP开发规范手册之PHP代码规范详解
2011/01/13 PHP
ThinkPHP表单自动提交验证实例教程
2014/07/18 PHP
javascript 选择文件夹对话框(web)
2009/07/07 Javascript
JS模块与命名空间的介绍
2013/03/22 Javascript
如何判断微信内置浏览器(通过User Agent实现)
2014/09/01 Javascript
javascript实现的简单的表单验证
2015/07/10 Javascript
JS简单测试循环运行时间的方法
2016/09/04 Javascript
javascript另类方法实现htmlencode()与htmldecode()函数实例分析
2016/11/17 Javascript
浅谈DOM的操作以及性能优化问题-重绘重排
2017/01/08 Javascript
javascript实现table单元格点击展开隐藏效果(实例代码)
2017/04/10 Javascript
jQuery Ajax向服务端传递数组参数值的实例代码
2017/09/03 jQuery
Vue源码学习之初始化模块init.js解析
2017/11/02 Javascript
vuex的简单使用教程
2018/02/02 Javascript
JS中getElementsByClassName与classList兼容性问题解决方案分析
2019/08/07 Javascript
微信小程序跳转到其他网页(外部链接)的实现方法
2019/09/20 Javascript
JavaScript数组及常见操作方法小结
2019/11/13 Javascript
JavaScript实现留言板案例
2020/03/17 Javascript
jquery实现简单每周轮换的日历
2020/09/10 jQuery
vuex的数据渲染与修改浅析
2020/11/26 Vue.js
python实现封装得到virustotal扫描结果
2014/10/05 Python
Python实现屏幕截图的两种方式
2018/02/05 Python
wxpython实现图书管理系统
2018/03/12 Python
python用户评论标签匹配的解决方法
2018/05/31 Python
在Pycharm中将pyinstaller加入External Tools的方法
2019/01/16 Python
python 判断文件还是文件夹的简单实例
2019/06/10 Python
Pycharm小白级简单使用教程
2020/01/08 Python
python实现简单飞行棋
2020/02/06 Python
Python中pyecharts安装及安装失败的解决方法
2020/02/18 Python
python计算Content-MD5并获取文件的Content-MD5值方式
2020/04/03 Python
Python pip 常用命令汇总
2020/10/19 Python
你可能不熟练的十个前端HTML5经典面试题
2018/07/03 HTML / CSS
详解Html5原生拖拽操作
2018/01/12 HTML / CSS
泰海淘:泰国king Power王权免税集团旗下跨境海淘综合型电商
2020/07/26 全球购物
求职毕业生自荐书
2014/02/08 职场文书
秋天的图画教学反思
2014/05/01 职场文书
mysql获取指定时间段中所有日期或月份的语句(不设存储过程,不加表)
2021/06/18 MySQL