使用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批量修改文件名的实现代码
Sep 01 Python
Python单例模式的两种实现方法
Aug 14 Python
django DRF图片路径问题的解决方法
Sep 10 Python
使用Django简单编写一个XSS平台的方法步骤
Mar 25 Python
python 整数越界问题详解
Jun 27 Python
python爬虫解决验证码的思路及示例
Aug 01 Python
python使用matplotlib绘制雷达图
Oct 18 Python
Tensorflow 实现释放内存
Feb 03 Python
Pycharm最常用的快捷键及使用技巧
Mar 05 Python
浅谈python出错时traceback的解读
Jul 15 Python
pandas DataFrame.shift()函数的具体使用
May 24 Python
Appium中scroll和drag_and_drop根据元素位置滑动
Feb 15 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批量删除数据
2007/01/18 PHP
PHP中substr_count()函数获取子字符串出现次数的方法
2016/01/07 PHP
Symfony2实现在controller中获取url的方法
2016/03/18 PHP
javascript 图片裁剪技巧解读
2012/11/15 Javascript
JQuery入门——用映射方式绑定不同事件应用示例
2013/02/05 Javascript
JavaScript中使用arguments获得函数传参个数实例
2014/08/27 Javascript
jQuery实现将页面上HTML标签换成另外标签的方法
2015/06/09 Javascript
javascript实现全角半角检测的方法
2015/07/23 Javascript
函数window.open实现关闭所有的子窗口
2015/08/03 Javascript
原生js实现图片轮播特效
2015/12/18 Javascript
Javascript中的几种继承方式对比分析
2016/03/22 Javascript
酷! 不同风格页面布局幻灯片特效js实现
2021/02/19 Javascript
微信小程序 页面之间传参实例详解
2017/01/13 Javascript
JS检测window.open打开的窗口是否关闭
2017/06/25 Javascript
JavaScript解析任意形式的json树型结构展示
2017/07/23 Javascript
详解在express站点中使用ejs模板引擎
2017/09/21 Javascript
jQuery中event.target和this的区别详解
2020/08/13 jQuery
[07:08]2014DOTA2西雅图国际邀请赛 小组赛7月11日TOPPLAY
2014/07/11 DOTA
python处理json数据中的中文
2014/03/06 Python
详解Python发送邮件实例
2016/01/10 Python
使用Python写一个贪吃蛇游戏实例代码
2017/08/21 Python
Python基于ThreadingTCPServer创建多线程代理的方法示例
2018/01/11 Python
Python+matplotlib绘制不同大小和颜色散点图实例
2018/01/19 Python
python读取各种文件数据方法解析
2018/12/29 Python
基于python计算滚动方差(标准差)talib和pd.rolling函数差异详解
2020/06/08 Python
Django实现简单的分页功能
2021/02/22 Python
不同浏览器创建XMLHttpRequest方法有什么不同
2014/11/17 面试题
学期研究性学习个人的自我评价
2014/01/09 职场文书
最新会计专业求职信范文
2014/01/28 职场文书
护理专业自我鉴定
2014/01/30 职场文书
《母鸡》教学反思
2014/02/25 职场文书
赡养老人协议书
2014/04/21 职场文书
中文专业自荐书
2014/06/29 职场文书
上班迟到检讨书300字
2014/10/18 职场文书
事业单位个人查摆问题及整改措施
2014/10/28 职场文书
集结号观后感
2015/06/08 职场文书