使用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使用scrapy抓取网站sitemap信息的方法
Apr 08 Python
python批量下载网站马拉松照片的完整步骤
Dec 05 Python
Python 调用 zabbix api的方法示例
Jan 06 Python
Python3实现从排序数组中删除重复项算法分析
Apr 03 Python
在Pycharm中使用GitHub的方法步骤
Jun 13 Python
django中使用事务及接入支付宝支付功能
Sep 15 Python
python脚本实现mp4中的音频提取并保存在原目录
Feb 27 Python
Django 实现 Websocket 广播、点对点发送消息的代码
Jun 03 Python
python能做哪方面的工作
Jun 15 Python
python基础详解之if循环语句
Apr 24 Python
Python torch.flatten()函数案例详解
Aug 30 Python
基于PyQT5制作一个桌面摸鱼工具
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的魔术常量__METHOD__简介
2014/07/08 PHP
浅谈PHP面向对象之访问者模式+组合模式
2017/05/22 PHP
JavaScript 编程引入命名空间的方法
2007/06/29 Javascript
javascript实现的距离现在多长时间后的一个格式化的日期
2009/10/29 Javascript
js Html结构转字符串形式显示代码
2011/11/15 Javascript
js控制不同的时间段显示不同的css样式的实例代码
2013/11/04 Javascript
给文字加上着重号的JS代码
2013/11/12 Javascript
使用js写的一个简易的投票
2013/11/27 Javascript
微信分享的标题、缩略图、连接及描述设置方法
2014/10/14 Javascript
Nodejs极简入门教程(二):定时器
2014/10/25 NodeJs
JS获取浏览器语言动态加载JS文件示例代码
2014/10/31 Javascript
JavaScript数据类型检测代码分享
2015/01/26 Javascript
JavaScript实现的SHA-1加密算法完整实例
2016/02/02 Javascript
基于JavaScript实现 网页切出 网站title变化代码
2016/04/03 Javascript
JavaScript面向对象编写购物车功能
2016/08/19 Javascript
浅谈Vue.js中ref ($refs)用法举例总结
2017/12/19 Javascript
JavaScript门道之标准库
2018/05/26 Javascript
VUE中setTimeout和setInterval自动销毁案例
2020/09/07 Javascript
[56:17]NB vs Infamous 2019国际邀请赛淘汰赛 败者组 BO3 第三场 8.22
2019/09/05 DOTA
python单链表实现代码实例
2013/11/21 Python
基于Python中单例模式的几种实现方式及优化详解
2018/01/09 Python
破解安装Pycharm的方法
2018/10/19 Python
python使用matplotlib绘制雷达图
2019/10/18 Python
浅析Python数字类型和字符串类型的内置方法
2019/12/22 Python
Python中pass的作用与使用教程
2020/11/13 Python
python爬虫看看虎牙女主播中谁最“顶”步骤详解
2020/12/01 Python
在Python中实现字典反转案例
2020/12/05 Python
使用tkinter实现三子棋游戏
2021/02/25 Python
农村党员一句话承诺
2014/05/30 职场文书
尊老爱亲美德少年事迹材料
2014/08/14 职场文书
学习张林森心得体会
2014/09/10 职场文书
单位工作证明
2014/10/07 职场文书
2014年控辍保学工作总结
2014/12/08 职场文书
2015年新教师个人工作总结
2015/10/14 职场文书
golang 实现菜单树的生成方式
2021/04/28 Golang
CSS中calc(100%-100px)不加空格不生效
2023/05/07 HTML / CSS