使用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的Flask框架下使用sqlalchemy库的简单教程
Apr 09 Python
Python中内置数据类型list,tuple,dict,set的区别和用法
Dec 14 Python
详解Python读取配置文件模块ConfigParser
May 11 Python
python实现朴素贝叶斯算法
Nov 19 Python
opencv3/C++实现视频读取、视频写入
Dec 11 Python
Python:type、object、class与内置类型实例
Dec 25 Python
python统计字符的个数代码实例
Feb 07 Python
python代码如何注释
Jun 01 Python
Django多数据库联用实现方法解析
Nov 12 Python
python 逆向爬虫正确调用 JAR 加密逻辑
Jan 12 Python
python os.listdir()乱码解决方案
Jan 31 Python
PyQt5通过信号实现MVC的示例
Feb 06 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
Memcache 在PHP中的使用技巧
2010/02/08 PHP
深入PHP获取随机数字和字母的方法详解
2013/06/06 PHP
php错误级别的设置方法
2013/06/17 PHP
PHP改进计算字符串相似度的函数similar_text()、levenshtein()
2014/10/27 PHP
jquery不支持toggle()高(新)版本的问题解决
2016/09/24 PHP
PHP实现链式操作的三种方法详解
2017/11/16 PHP
jQuery获取注册信息并提示实现代码
2013/04/21 Javascript
JavaScript基础篇之变量作用域、传值、传址的简单介绍与实例
2013/06/29 Javascript
nodejs中简单实现Javascript Promise机制的实例
2014/12/06 NodeJs
JavaScript中document.forms[0]与getElementByName区别
2015/01/21 Javascript
第四篇Bootstrap网格系统偏移列和嵌套列
2016/06/21 Javascript
jQuery实现边框动态效果的实例代码
2016/09/23 Javascript
jQuery快速高效制作网页交互特效
2017/02/24 Javascript
纯JS实现简单的日历
2017/06/26 Javascript
Vue Transition实现类原生组件跳转过渡动画的示例
2017/08/19 Javascript
vue mixins组件复用的几种方式(小结)
2017/09/06 Javascript
ES6 javascript的异步操作实例详解
2017/10/30 Javascript
利用jqprint插件打印页面内容的实现方法
2018/01/09 Javascript
解决bootstrap中下拉菜单点击后不关闭的问题
2018/08/10 Javascript
JavaScript语法约定和程序调试原理解析
2020/11/03 Javascript
python获得linux下所有挂载点(mount points)的方法
2015/04/29 Python
python爬虫中get和post方法介绍以及cookie作用
2018/02/08 Python
Django中使用Celery的教程详解
2018/08/24 Python
Python数据可视化:顶级绘图库plotly详解
2019/12/07 Python
Python反爬虫伪装浏览器进行爬虫
2020/02/28 Python
pandas 强制类型转换 df.astype实例
2020/04/09 Python
CSS3实现复选框动画特效示例代码
2016/09/27 HTML / CSS
HTML5 实战PHP之Web页面表单设计
2011/10/09 HTML / CSS
值传递还是引用传递
2015/02/08 面试题
经典大学生求职信范文
2014/01/06 职场文书
企业法人授权委托书
2014/04/03 职场文书
建筑安全标语
2014/06/07 职场文书
大学生翘课检讨书范文
2014/10/06 职场文书
读《茶花女》有感:山茶花的盛开与凋零
2020/01/17 职场文书
mysql脏页是什么
2021/07/26 MySQL
零基础学java之带返回值的方法的定义和调用
2022/04/10 Java/Android