Scrip em Python: Escrevendo um Script em Python para Scannear a Rede.



Digite este Código em um editor de Texto e salve com o Nome que quiser como ScannRede.Py3
pra ficar inda mais fácilpra voce copie para o diretório /usr/bin  que assim ele fica um comando executável de qualquer diretorio como qualquer outro comando.




#!/usr/bin/env python3
# -*- coding: utf-8 -*-
__doc__="""
# Digite o Primeiro IP Completo (EX: 10.32.0.1)
# Depois o ultimo Octeto (EX: 254)
# No final será mostrado os IP's E OS MAC's conectados
# E DIRÁ O NÚMERO DE EQUIPAMENTOS ONLINE NA REDE
"""
import sys
import subprocess
import os
import subprocess
import time
import threading
from threading import Thread


class NetworkScanner(object):
    ips_online=[]
    threads=[]
    
    def scannear_rede(self, ip_inicial, ip_final):
        ip_base=subprocess.getoutput("echo %s 2> /dev/null | egrep -o \"([0-9]{1,3}\.){3}\"" % ip_inicial)
        ip_inicial=int(subprocess.getoutput("echo %s 2> /dev/null | egrep -o \"([0-9]{1,3})$\"" % ip_inicial))
        ip_final=int(ip_final)
    
        while(ip_inicial <= ip_final):
            ip=ip_base+str(ip_inicial)
            self.threads.append(threading.Thread(target=self.ping, args=(ip,)).start())
            ip_inicial += 1
    
    def ping(self, ip):
        time.sleep(0.2)
        ping = os.system('ping -c 1 %s > /dev/null 2> /dev/null' % ip)
        if(ping==0):
            mac_adress=subprocess.getoutput("arp -a %s 2> /dev/null | egrep -o \"([a-Z,0-9]{2}\:){5}[a-Z,0-9]{2}\"" % ip)
            self.ips_online.append((ip,mac_adress,))
        while(len(self.threads)==0):
            time.sleep(0.5)
        self.threads.pop()
        print("\n\n*****************\nTHREADS EXISTENTES >> %s\n*****************\n" % len(self.threads))
        return 
        
def main():
    ip_inicial = input("Digite o IP inicial (completo): ")
    ip_final = input("Digite o IP final (apenas o último octeto. Ex: 254): ")
    
    
    scan = NetworkScanner()
    scan.scannear_rede(ip_inicial, ip_final)
    
    while(len(scan.threads)>0):
        time.sleep(0.5)
        #print("\n\n*****************\nTHREADS EXISTENTES >> %s\n*****************\n" % len(scan.threads))
    
    scan.ips_online.sort()
    for pc in scan.ips_online:
        print("PC ONLINE >> IP=%s - MAC=%s" % (pc[0], pc[1]))
    
    print("\nExistem %s dispositivos online neste momento\n\n" % len(scan.ips_online))
    
    return 0

if __name__ == '__main__':
    main()



link para gerar o codigo no blog creditos para -> http://formatmysourcecode.blogspot.com.br/
Close Menu