使用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中的多进程与多线程的使用
Apr 07 Python
详解常用查找数据结构及算法(Python实现)
Dec 09 Python
Python使用微信SDK实现的微信支付功能示例
Jun 30 Python
简单易懂的python环境安装教程
Jul 13 Python
使用Python实现博客上进行自动翻页
Aug 23 Python
Python Learning 列表的更多操作及示例代码
Aug 22 Python
Python读取txt内容写入xls格式excel中的方法
Oct 11 Python
详解Python odoo中嵌入html简单的分页功能
May 29 Python
pandas 空数据处理方法详解
Nov 02 Python
python numpy 矩阵堆叠实例
Jan 17 Python
pycharm配置安装autopep8自动规范代码的实现
Mar 02 Python
Python可视化神器pyecharts绘制水球图
Jul 07 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
基于mysql的论坛(2)
2006/10/09 PHP
php获取服务器信息的实现代码
2013/02/04 PHP
PHP把网页保存为word文件的三种方法
2014/04/01 PHP
PHP设计模式之建造者模式定义与用法简单示例
2018/08/13 PHP
关于laravel模板中生成URL的几种模式总结
2019/10/18 PHP
jquery延迟加载外部js实现代码
2013/01/11 Javascript
NodeJS使用jQuery选择器操作DOM
2015/02/13 NodeJs
jQuery实现TAB风格的全国省份城市滑动切换效果代码
2015/08/24 Javascript
js面向对象之常见创建对象的几种方式(工厂模式、构造函数模式、原型模式)
2015/11/09 Javascript
jQuery progressbar通过Ajax请求实现后台进度实时功能
2016/10/11 Javascript
JS实现动态添加DOM节点和事件的方法示例
2017/04/28 Javascript
利用vscode编写vue的简单配置详解
2017/06/17 Javascript
纯js实现页面返回顶部的动画(超简单)
2017/08/10 Javascript
vue父组件中获取子组件中的数据(实例讲解)
2017/09/27 Javascript
vue-cli webpack 引入swiper的操作方法
2018/09/15 Javascript
node微信开发之获取access_token+自定义菜单
2019/03/17 Javascript
详解JavaScript中的坐标和距离
2019/05/27 Javascript
vue excel上传预览和table内容下载到excel文件中
2019/12/10 Javascript
vue项目或网页上实现文字转换成语音播放功能
2020/06/09 Javascript
python根据出生日期获得年龄的方法
2015/03/31 Python
Python实现好友全头像的拼接实例(推荐)
2017/06/24 Python
从运行效率与开发效率比较Python和C++
2018/12/14 Python
Python 循环终止语句的三种方法小结
2019/06/24 Python
python判断正负数方式
2020/06/03 Python
Spring @Enable模块驱动原理及使用实例
2020/06/23 Python
recorder.js 基于Html5录音功能的实现
2020/05/26 HTML / CSS
《乌塔》教学反思
2014/02/17 职场文书
市场总经理岗位职责
2014/04/11 职场文书
大学生翘课检讨书范文
2014/10/06 职场文书
校园文化艺术节宣传标语
2014/10/09 职场文书
傲慢与偏见电影观后感
2015/06/10 职场文书
新生儿未入户证明
2015/06/23 职场文书
2019暑期安全倡议书!
2019/06/27 职场文书
用python实现监控视频人数统计
2021/05/21 Python
JavaWeb 入门篇:创建Web项目,Idea配置tomcat
2021/07/16 Java/Android
深入理解CSS 中 transform matrix矩阵变换问题
2021/08/30 HTML / CSS