使用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动刷新抢12306火车票的代码(附源码)
Jan 24 Python
解决python ogr shp字段写入中文乱码的问题
Dec 31 Python
树莓派使用python-librtmp实现rtmp推流h264的方法
Jul 22 Python
Python 正则表达式爬虫使用案例解析
Sep 23 Python
Python模拟登入的N种方式(建议收藏)
May 31 Python
python 安装移动复制第三方库操作
Jul 13 Python
Python hashlib和hmac模块使用方法解析
Dec 08 Python
selenium设置浏览器为headless无头模式(Chrome和Firefox)
Jan 08 Python
Python操作Excel的学习笔记
Feb 18 Python
利用python实现汉诺塔游戏
Mar 01 Python
python3.9之你应该知道的新特性详解
Apr 29 Python
python3实现无权最短路径的方法
May 12 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语法(5)
2006/10/09 PHP
从手册去理解分析PHP session机制
2011/07/17 PHP
基于php导出到Excel或CSV的详解(附utf8、gbk 编码转换)
2013/06/25 PHP
Zend Framework教程之MVC框架的Controller用法分析
2016/03/07 PHP
php+jquery+html实现点击不刷新加载更多的实例代码
2016/08/12 PHP
javascript nextSibling 与 getNextElement(node) 使用介绍
2011/10/13 Javascript
jQuery实现鼠标划过修改样式的方法
2015/04/14 Javascript
AngularJS中$watch和$timeout的使用示例
2016/09/20 Javascript
Javascript 普通函数和构造函数的区别
2016/11/05 Javascript
Vue 报错TypeError: this.$set is not a function 的解决方法
2018/12/17 Javascript
在vue和element-ui的table中实现分页复选功能
2019/12/04 Javascript
vue实现导航标题栏随页面滚动渐隐渐显效果
2020/03/12 Javascript
js瀑布流布局的实现
2020/06/28 Javascript
JavaScript大数相加相乘的实现方法实例
2020/10/18 Javascript
夯基础之手撕javascript继承详解
2020/11/09 Javascript
JavaScript Dom实现轮播图原理和实例
2021/02/19 Javascript
[08:47]2018国际邀请赛 OG战队举杯时刻
2018/08/29 DOTA
[02:03]风行者至宝清风环佩外观展示
2020/09/05 DOTA
Python中处理字符串的相关的len()方法的使用简介
2015/05/19 Python
Python使用ConfigParser模块操作配置文件的方法
2018/06/29 Python
python scp 批量同步文件的实现方法
2019/01/03 Python
python 一个figure上显示多个图像的实例
2019/07/08 Python
python pyecharts 实现一个文件绘制多张图
2020/05/13 Python
使用javascript和HTML5 Canvas画的四渐变色播放按钮效果
2014/04/10 HTML / CSS
Mankind美国/加拿大:英国领先的男士美容护发用品公司
2018/12/05 全球购物
波兰电子产品购物网站:Vobis
2019/05/26 全球购物
如何防止同一个帐户被多人同时登录
2013/08/01 面试题
小学防溺水制度
2014/01/29 职场文书
工程招投标邀请书
2014/01/30 职场文书
党的群众路线教育实践活动自我剖析材料
2014/10/08 职场文书
领导干部考核评语
2015/01/04 职场文书
应急管理工作总结2015
2015/05/04 职场文书
土木工程毕业答辩开场白
2015/05/29 职场文书
宾馆安全管理制度
2015/08/06 职场文书
导游词之舟山普陀山
2019/11/06 职场文书
Python中Matplotlib的点、线形状、颜色以及绘制散点图
2022/04/07 Python