使用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实现检测服务器是否可以ping通的2种方法
Jan 01 Python
python如何获取服务器硬件信息
May 11 Python
Python基于win32ui模块创建弹出式菜单示例
May 09 Python
python爬虫获取新浪新闻教学
Dec 23 Python
Python pycharm 同时加载多个项目的方法
Jan 17 Python
python实现图书借阅系统
Feb 20 Python
在win10和linux上分别安装Python虚拟环境的方法步骤
May 09 Python
Python格式化字符串f-string概览(小结)
Jun 18 Python
python 利用turtle库绘制笑脸和哭脸的例子
Nov 23 Python
opencv 形态学变换(开运算,闭运算,梯度运算)
Jul 07 Python
如何用python 操作zookeeper
Dec 28 Python
Ubuntu20.04环境安装tensorflow2的方法步骤
Jan 29 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(六)
2006/10/09 PHP
mysql 字段类型说明
2007/04/27 PHP
php中strstr、strrchr、substr、stristr四个函数的区别总结
2014/09/22 PHP
php使用json_decode后数字对象转换成了科学计数法的解决方法
2017/02/20 PHP
Yii2汉字转拼音类的实例代码
2017/04/18 PHP
PHP培训要多少钱
2017/06/06 PHP
Laravel使用支付宝进行支付的示例代码
2017/08/16 PHP
详解PHP的抽象类和抽象方法以及接口总结
2019/03/15 PHP
关于取不到由location.href提交而来的上级页面地址的解决办法
2009/07/30 Javascript
jQuery AnythingSlider滑动效果插件
2010/02/07 Javascript
图片延迟加载的实现代码(模仿懒惰)
2013/03/29 Javascript
jquery中JSON的解析方式
2015/03/16 Javascript
JS实现仿QQ效果的三级竖向菜单
2015/09/25 Javascript
jQuery获取父元素节点、子元素节点及兄弟元素节点的方法
2016/04/14 Javascript
JS添加删除DIV的简单实例
2016/07/08 Javascript
解析预加载显示图片艺术
2016/12/05 Javascript
使用BootStrap进行轮播图的制作
2017/01/06 Javascript
JS实现的集合去重,交集,并集,差集功能示例
2018/03/13 Javascript
Vue中的字符串模板的使用
2018/05/17 Javascript
浅谈Vue项目骨架屏注入实践
2019/08/05 Javascript
JavaScript字符串处理常见操作方法小结
2019/11/15 Javascript
js实现文字头像的生成代码
2020/03/07 Javascript
[46:25]DOTA2上海特级锦标赛主赛事日 - 4 败者组第五轮 MVP.Phx VS EG第二局
2016/03/05 DOTA
使用XML库的方式,实现RPC通信的方法(推荐)
2017/06/14 Python
Python及Django框架生成二维码的方法分析
2018/01/31 Python
python逐行读写txt文件的实例讲解
2018/04/03 Python
利用Python实现在同一网络中的本地文件共享方法
2018/06/04 Python
python爬虫租房信息在地图上显示的方法
2019/05/13 Python
Python应用实现处理excel数据过程解析
2020/06/19 Python
Python如何对齐字符串
2020/07/30 Python
Weblogc domain问题
2014/01/27 面试题
什么情况下你必须要把一个类定义为abstract的
2013/01/06 面试题
学期研究性学习个人的自我评价
2014/01/09 职场文书
宣传活动总结范文
2014/07/01 职场文书
党的群众路线教育实践活动个人整改措施落实情况
2014/11/04 职场文书
一文彻底理解js原生语法prototype,__proto__和constructor
2021/10/24 Javascript