使用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的迭代器、生成器以及相关的itertools包
Apr 02 Python
Python的Flask框架中web表单的教程
Apr 20 Python
Python 文件处理注意事项总结
Apr 10 Python
利用Python如何实现数据驱动的接口自动化测试
May 11 Python
python实现按长宽比缩放图片
Jun 07 Python
python找出一个列表中相同元素的多个索引实例
Jun 11 Python
浅谈PySpark SQL 相关知识介绍
Jun 14 Python
pytorch方法测试——激活函数(ReLU)详解
Jan 15 Python
浅谈sklearn中predict与predict_proba区别
Jun 28 Python
Python3爬虫关于识别点触点选验证码的实例讲解
Jul 30 Python
python tqdm实现进度条的示例代码
Nov 10 Python
pip 20.3 新版本发布!即将抛弃 Python 2.x(推荐)
Dec 16 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+MySQL 手工注入语句大全 推荐
2009/10/30 PHP
php 多线程上下文中安全写文件实现代码
2009/12/28 PHP
PHP学习之数组值的操作
2011/04/17 PHP
一个不易被发现的PHP后门代码解析
2014/07/05 PHP
Zend Framework分页类用法详解
2016/03/22 PHP
修改Laravel5.3中的路由文件与路径
2016/08/10 PHP
PHP测试框架PHPUnit组织测试操作示例
2018/05/28 PHP
Javascript & DHTML 实例编程(教程)基础知识
2007/06/02 Javascript
Javascript执行效率全面总结
2013/11/04 Javascript
js中一维数组和二位数组中的几个问题示例说明
2014/07/17 Javascript
用Jquery选择器计算table中的某一列某一行的合计
2014/08/13 Javascript
jQuery自动添加表单项的方法
2015/07/13 Javascript
轻松实现javascript数据双向绑定
2015/11/11 Javascript
5个最顶级jQuery图表类库插件【jquery插件库】
2016/05/05 Javascript
js仿手机页面文件下拉刷新效果
2016/10/14 Javascript
js获取当前页的URL与window.location.href简单方法
2017/02/13 Javascript
Angular js 实现添加用户、修改密码、敏感字、下拉菜单的综合操作方法
2017/10/24 Javascript
解决option标签selected="selected"属性失效的问题
2017/11/06 Javascript
推荐一个基于Node.js的表单验证库
2019/02/15 Javascript
微信小程序常见页面跳转操作简单示例
2019/05/01 Javascript
用python + openpyxl处理excel2007文档思路以及心得
2014/07/14 Python
简单介绍Python中的try和finally和with方法
2015/05/05 Python
基于python中staticmethod和classmethod的区别(详解)
2017/10/24 Python
Python如何实现MySQL实例初始化详解
2017/11/06 Python
python模块之paramiko实例代码
2018/01/31 Python
CSS3网格的三个新特性详解
2014/04/04 HTML / CSS
英国最大的百货公司:Harrods
2016/08/18 全球购物
美国在线医疗分销商:MedEx Supply
2020/02/04 全球购物
巴西最大的运动品牌:Olympikus
2020/07/14 全球购物
什么样的创业计划书可行性高?
2014/02/01 职场文书
2014教师教育实践活动对照检查材料思想汇报
2014/09/21 职场文书
假释思想汇报范文
2014/10/11 职场文书
2015年安全员工作总结范文
2015/04/22 职场文书
2016大学生社会实践单位评语
2015/12/01 职场文书
实例讲解Python中sys.argv[]的用法
2021/06/03 Python
BCL经典机 SONY ICF-5900W电路分析
2022/04/24 无线电