python局域网alive ip侦听

python局域网alive ip侦听

作者:vpoet

日期:夏季

注:写着玩,欢迎copy

# -*- coding: cp936 -*-
# coding = utf-8

import os
import re
import thread
import time
import socket
import sys

def Ping_Ip(Curr_Ip):

    global Count_Thread,lock,ThreadsNum

    #print "*****************Chile_Thread-Begin****************"+"\n"

    ping_cmd = "ping" +" "+Curr_Ip

    Ping_Answer = os.popen(ping_cmd).readlines()
    patt = r'TTL=([0-9]{2})'
    TTL_Str=re.findall(patt,Ping_Answer[2])

    if len(TTL_Str) == 0:
        #print Curr_Ip+"is Not Alive"
        pass
        #print "*****************Chile_Thread-Over****************"+"\n"
    else:
        HostInfo = socket.gethostbyaddr(Curr_Ip)
        Mac_address=Get_Mac_Addr(Curr_Ip)
        #print "Mac_address"+Mac_address
        print "\n"+"Alive Host----->   "+"HostComputerName:"+HostInfo[0]+"   Mac_address:"+Mac_address+"\t"+"Ip:"+Curr_Ip

        #print "*****************Chile_Thread-Over****************"+"\n"

    lock.acquire()
    Count_Thread = Count_Thread+1
    if Count_Thread ==ThreadsNum:
        print "*****************NetWork_End***************"
    lock.release()  

def Get_Mac_Addr(Curr_Ip):

    Mac_cmd = "nbtstat -A "+Curr_Ip
    Mac_Info = os.popen(Mac_cmd).readlines()

    Mac_Info_Sum=""

    for index in range(0,len(Mac_Info)):
        Mac_Info_Sum=Mac_Info_Sum+Mac_Info[index]

    patt_mac = r'= (.{2}-.{2}-.{2}-.{2}-.{2}-.{2})'
    mac_addr= re.findall(patt_mac,Mac_Info_Sum)
    return mac_addr[0]

def GetAliveIp(Net_iP_Init,IpBegin,IpEnd):
    SplitIp = Net_iP_Init.split(".")
    Ip1=SplitIp[0]
    Ip2=SplitIp[1]
    Ip3=SplitIp[2]

    Prefix_Ip = Ip1+"."+Ip2+"."+Ip3+"."

    for Ip_Last in range(IpBegin,IpEnd+1):
        Curr_Ip=Prefix_Ip+str(Ip_Last)

        thread.start_new_thread(Ping_Ip, (Curr_Ip,))
        time.sleep(2)

def GetNetGate():
    Netgate_cmd = "ipconfig /all"
    Netgate_info = os.popen(Netgate_cmd).readlines()

    Netgate_info_Str = ""
    for index in range(0,len(Netgate_info)):
        Netgate_info_Str=Netgate_info_Str+Netgate_info[index]
        #print Netgate_info_Str
        #print type(Netgate_info_Str)

    patt_hn = r'主机名  . . . . . . . . . . . . . : (.+)'
    Host_Name_Local = re.findall(patt_hn,Netgate_info_Str)

    Rent_Ip_Begin=r'获得租约的时间  . . . . . . . . . : (.+)'
    Rent_Ip_Begins=re.findall(Rent_Ip_Begin,Netgate_info_Str)

    Rent_Ip_End=r'租约过期的时间  . . . . . . . . . : (.+)'
    Rent_Ip_Ends=re.findall(Rent_Ip_End,Netgate_info_Str)

    patt_ipv6 = r'本地链接 IPv6 地址. . . . . . . . : ([a-z0-9]{3,4}::[a-z0-9]{3,4}:[a-z0-9]{3,4}:[a-z0-9]{3,4}:[a-z0-9]{3,4}%[0-9]{2})'
    ipv6 = re.findall(patt_ipv6,Netgate_info_Str)

    patt_ipv4 = r'IPv4 地址 . . . . . . . . . . . . : ([0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3})'
    ipv4 = re.findall(patt_ipv4,Netgate_info_Str)

    YanMas= r'子网掩码  . . . . . . . . . . . . : ([0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3})'
    YM = re.findall(YanMas,Netgate_info_Str)

    Netgates = r'默认网关. . . . . . . . . . . . . : ([0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3})'
    Ng = re.findall(Netgates,Netgate_info_Str)

    Patt_dhcp = r'DHCP 已启用 . . . . . . . . . . . : (.{1,2})'
    dhcp_Is=re.findall(Patt_dhcp,Netgate_info_Str)

    Patt_dhcp_server = r'DHCP 服务器 . . . . . . . . . . . : ([0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3})'
    dhcp_server = re.findall(Patt_dhcp_server,Netgate_info_Str)

    print "本地主机名:  "+Host_Name_Local[0]
    print "本机IPv6地址:  "+ipv6[0]
    print "本机IPv4地址:  "+ipv4[0]
    print "子网掩码:  "+YM[0]
    print "默认网关:  "+Ng[0]
    print "是否启用DHCP:  "+dhcp_Is[0]
    print "DHCP服务器IP:  "+dhcp_server[0]
    print "动态租约起始时间:  "+Rent_Ip_Begins[0]
    print "动态租约过期时间:  "+Rent_Ip_Ends[0]

    return Ng[0]

if __name__ == "__main__":

    Count_Thread = 0
    lock = thread.allocate_lock()
    print "*****************NetWork_Begin**************"

    Net_iP_Init=GetNetGate()

    IpBegin = raw_input("请输入侦听起始IP:")
    IpEnd = raw_input("请输入侦听结束IP:")

    IntIpBegin = int(IpBegin)
    IntIpEnd = int(IpEnd)

    ThreadsNum = IntIpEnd+1-IntIpBegin

    GetAliveIp(Net_iP_Init,IntIpBegin,IntIpEnd)

执行截图:

时间: 2024-08-29 02:01:46

python局域网alive ip侦听的相关文章

更改服务器群集IP及数据库AlwayOn侦听IP

目前数据库服务器有三台,操作系统版本Windows Server 2008 R2 with Sp1,数据库版本为SQL Server 2012 Standard R2,三台数据库服务器的计算机名称及IP地址分别如下: sqlsrv-001    :    10.0.0.11, sqlsrv-002    :    10.0.0.12, sqlsrv-003    :    10.0.0.13, 服务器群集IP为10.0.0.10 ,数据库侦听IP为10.0.0.15 为了业务需要,现在需要把所有

静动态侦听及报错

今天在玩测试环境的时候,有好几个侦听端口,我就嫌麻烦,他多余的删除了.只留下一个默认的LISTENER,结果发生了错误. 无法连接,我的服务器ip为:192.168.1.2 报错:目标主机不可达, 意思很明显,就是ip问题.我查看了一下本地ip和两个配置侦听的参数,发现ip都没有问题: 我就去用grid用户登录打开侦听配置界面在netmgr里面把listener的实例名改为固定ip地址 然后发现有出现新的错误: 发现目标地址正在使用????我想,那不是废话吗,我服务器ip就是当前配置的ip地址呀

31SkypeForBusiness2015进阶篇--创建侦听器并重新发布拓扑

6.3.13 创建侦听器 创建侦听器之前,我们需要更改下之前侦听器的DNS记录指定的IP地址,更新到我们规划的IP地址:172.16.10.23/24 6.3.15 重新发布拓扑

侦听状态一直为T的处理

省内发现 侦听没处理 我们进行查询  archive表中 common_region_id 与 team_key 没有发现错误 ip配置的也没错 进控制台查看 服务是开的 但很多都是失败的  看服务器日志 发现是表空间满了 清表 重启服务 然后还是不行  一个个ip一个个省份去查 发现其他省份中有转态为DT的(重新调度) 然后改ip(停止DT状态) 侦听还是没有读取 省份的人急了 直接找大boss 然后手动报竣 不走侦听 再来查问题 找后台 后台怀疑是侦听表锁了 然后叫数据库执行 之后成功解决问

SQL Server 2012 AlwaysOn高可用配置之九:添加侦听器

9.   添加侦听器 9.1 点击"添加侦听器" 9.2 输入侦听器名称和端口,点击"添加" 9.3 输入侦听器IP,点击"确定" 9.4 点击"确定" 9.5 成功创建完成侦听器后如下" 9.6 在AD中自动生成相应的对象 9.7 在DNS自动生成相应的DNS记录 SQL Server 2012 AlwaysOn高可用配置篇成功完结 -----------------------------------------

16.3 添加侦听器

16.3  添加侦听器 16.3.1 添加侦听器 在 SSMS 中,右键单击"可用性组侦听器",然后在右键菜单中选择"添加侦听器". "在新的可用性组侦听器"窗口,为侦听器指定 DNS 名称.端口(实例当前使用的端口).IP 地址. 添加完成后,在"可用性组侦听器"中将列出已有的侦听器. 上述操作,脚本为: USE [master] GO ALTER AVAILABILITY GROUP [HAGroup01] ADD LIS

GSM短信侦听的便宜方案

侦听GSM短信常用的是OsmocomBB + C118方案,主要是用luca/gsmmap分支.使用ccch_scan这个程序可以把通信封装成GSMTAP发给本机,然后用WireShark接收GSMTAP并作协议解析和短信解码.国内部分黑客写了Python或Perl脚本,替代WireShark解码,并打印输出或保存到MySQL数据库.还有人写了Web前端,来提高易用性. 针对OBB只支持PCH在TS0的情况,有人改了firmware,分别支持PCH在TS2,TS4和TS6,编译生成了4个firm

tcping侦听网络状态

yum -y install tcping 或者 编译安装 tcping命令 (可以直接运行tcping命令,和用ping命令一样,在机房禁PING或服务器禁PING的情况下来监控服务器的端口的状态,默认是tcping的80端口(ping向80端口就不用加端口号),也可以tcping其他端口(需要在IP后空格端口号).tcping的使用方法: tcping 59.36.100.206 或 tcping www.iisicp.com 或 tcping -t www.iisicp.com 或 tcp

Socket基础之-启动异步服务侦听

本文主要是以代码为主..NET技术交流群 199281001 .欢迎加入. //通知一个或多个正在等待的线程已发生事件. ManualResetEvent manager = new ManualResetEvent(false); 1 //负责监听的套接字 private Socket socketServer; 2 /// <summary> 3 /// 启动服务 4 /// </summary> 5 private void CreateSocketService() 6 {