Existe una aplicación gratuita y muy buena llamada "Angry IP Scanner", que te permite hacer un escaneado de tu LAN en apenas unos 15 segundos. Al cabo de ese tiempo te pone que direcciones están siendo usadas, cuáles son las MAC de esos equipos, etc. Muy recomendable.
Pero si queremos hacer un programa BAT nosotros mismos que haga eso mismo, podemos usar el siguiente archivo BAT, que hace un barrido de las direcciones IP de nuestra red de area local, desde la dirección "192.168.1.1" hasta la "192.168.1.254".
-----------------------------------------
equipos.bat:
@echo off
rem Para que funcione bien el "for"
setlocal enabledelayedexpansion
for /L %%p in (1,1,254) do (
rem Hare ping a los equipos solo una vez, para que no tarde demasiado en recorrer todos
ping -n 1 192.168.1.%%p > nul
rem Si la variable "errorlevel" vale 0, es que el ultimo comando (ping) se ha
rem ejecutado con exito, es decir, algun equipo ha respondido, y entonces muestro
rem por pantalla la direccion IP y la MAC de dicho equipo
if !errorlevel! == 0 (
for /f "tokens=1,2" %%n in ('arp -a 192.168.1.%%p ^| find "192.168.1.%%p"') do (
echo %%n ; %%o ; !date! ; !time!
)
)
)
---------------------------------------
Hay que tener en cuenta que ejecutar este programa tardará algunos minutos, puesto que tiene que recorrer 254 direcciones IP.
PROGRAMA VIGILANTE DE NUESTRA RED
Podemos usar el archivo BAT anterior para que se ejecute continuamente sobre un equipo que esté siempre encendido. De esta forma tendremos constancia en cada momento de qué equipos ( o direcciones IP ) están conectados a la red en cada momento.
Crearé un archivo BAT que llame al anterior continuamente y que guarde los resultados en un archivo de texto. El nuevo archivo BAT sería como sigue:
-------------------------------------
vigilante.bat
setlocal enabledelayedexpansion
title Vigilando la Red...
color F0
cls
echo VIGILANDO LA RED...
rem Voy a usar el archivo "equipos.bat" para que recorra
rem todas las direcciones IP de mi LAN, y el resultado
rem lo guardare en el archivo "equiposIP.txt"
rem Creo un bucle infinito para que se ejecute constantemente
for /L %%x in ( 1 , 0 , 1 ) do (
rem Voy a usar un archivo "auxiliar" para ir guardando
rem la informacion de cada barrido de IPs despues lo imprimo
rem por pantalla, y por ultimo lo guardo en "equiposIP.txt"
echo Dia: !date! - Hora: !time! > auxiliar.txt
echo ======================= >> auxiliar.txt
call equipos.bat >> auxiliar.txt
echo.
echo EQUIPOS CONECTADOS:
echo.
type auxiliar.txt
type auxiliar.txt >> equiposIP.txt
)
---------------------------------------------------------------
Y sería aconsejable que pusieramos un acceso directo a nuestro "vigilante" en la carpeta de "inicio" para que se arranque con cada inicio del sistema
---------------------------------------------------------------
ESTADISTICAS DE NUESTRA RED
Una vez "vigilada" nuestra red con nuestro "vigilante", tenemos el archivo "equiposIP.txt" con valiosa información sobre qué ordenadores se han conectado a nuestra red y a qué horas.
Podemos crear un archivo BAT que me pregunte un dia determinado, y me diga cuantos Pings se han realizado a cada equipo:
estad1.bat
setlocal enabledelayedexpansion
cls
echo VER ESTADISTICAS DE UN DIA DETERMINADO
echo ======================================
echo.
echo Introduce dia
set /p dia=
echo Introduce mes:
set /p mes=
echo Introduce anio
set /p anio=
set fecha=%dia%/%mes%/%anio%
title Estadisticas del dia %fecha%
rem Ahora busco las lineas del archivo "equiposIP.txt" que
rem contienen la fecha indicada
find "%fecha%" equiposIP.txt > aux1.txt
echo Estadisticas para el dia %fecha% > aux2.txt
echo. >> aux2.txt
echo Veces Equipo >> aux2.txt
echo ============== >> aux2.txt
echo. >> aux2.txt
rem En el archivo "aux1.txt", las direcciones MAC que mas
rem aparecen son las que mas tiempo han estado conectadas
rem a la red durante este dia. Voy a recorrer linea por linea
rem dicho archivo, viendo la MAC que tiene cada linea y contando
rem cuantas veces aparece dicha MAC en el archivo, y asi sabre
rem cuanto tiempo ha estado conectado dicho ordenador.
rem el primer for recorre linea por linea el archivo y guarda
rem en la variable %%i la MAC de cada linea
for /f "tokens=3" %%i in (aux1.txt) do (
rem Primero compruebo si la MAC actual ya la he usado antes
find "%%i" aux2.txt > nul
if !errorlevel! == 1 (
rem este segundo for me sirve para guardar en la variable
rem "veces" el numero de apariciones de la mac en el archivo
for /f "tokens=2 delims=:" %%x in ('find /c "%%i" aux1.txt') do (
set veces=%%x
rem y ahora guardo en "aux2.txt" una linea por cada mac y
rem cuantas apariciones tiene en el archivo "aux1.txt"
echo !veces! %%i >> aux2.txt
)
)
)
cls
sort /r aux2.txt
pause
cls
------------------------------------
Puedo hacer otro achivo BAT que me diga para un determinado mes de un determinado año, cuantos equipos se han conectado a la red, y cuantas veces cada uno:
estad2.bat
@echo off
setlocal enabledelayedexpansion
cls
echo VER ESTADISTICAS DE UN MES Y ANIO DETERMINADO
echo =============================================
echo.
set/p mes=Introduce el numero de mes con dos cifras (p.ej: 06)
set/p anio=Introduce el anio (p.ej: 2012)
title Estadisticas del mes %mes% de %anio%
rem Ahora busco las lineas del archivo "equiposIP.txt" que
rem contienen el mes indicado
find "/%mes%/%anio%" equiposIP.txt > aux1.txt
echo Estadisticas para el mes %mes% del anio %anio% > aux2.txt
echo. >> aux2.txt
echo Veces Equipo >> aux2.txt
echo ============== >> aux2.txt
echo. >> aux2.txt
rem En el archivo "aux1.txt", las direcciones MAC que mas
rem aparecen son las que mas tiempo han estado conectadas
rem a la red durante este mes. Voy a recorrer linea por linea
rem dicho archivo, viendo la MAC que tiene cada linea y contando
rem cuantas veces aparece dicha MAC en el archivo, y asi sabre
rem cuanto tiempo ha estado conectado dicho ordenador.
rem el primer for recorre linea por linea el archivo y guarda
rem en la variable %%i la MAC de cada linea
for /f "tokens=3" %%i in (aux1.txt) do (
rem Primero compruebo si la MAC actual ya la he usado antes
find "%%i" aux2.txt > nul
if !errorlevel! == 1 (
rem este segundo for me sirve para guardar en la variable
rem "veces" el numero de apariciones de la mac en el archivo
for /f "tokens=2 delims=:" %%x in ('find /c "%%i" aux1.txt') do (
set veces=%%x
rem y ahora guardo en "aux2.txt" una linea por cada mac y
rem cuantas apariciones tiene en el archivo "aux1.txt"
echo !veces! %%i >> aux2.txt
)
)
)
cls
rem Y ahora muestro ordenado del reves el archivo "aux2.txt"
sort /r aux2.txt
pause
cls
---------------------------------------------------------
y otro archivo BAT más complicado, que me muestre las fechas de las conexiones que ha tenido cada equipo, y cuantos Pings se ha hecho a ellos en cada fecha:
@echo off
setlocal enabledelayedexpansion
cls
echo VER LOS DIAS QUE SE HA CONECTADO CADA EQUIPO
echo ============================================
echo.
title Dias que se ha conectado cada equipo
rem Guardo en el archivo "aux1.txt" las lineas que contienen direcciones IP
rem y MAC
find "192.168." equiposIP.txt > aux1.txt
rem y ahora en el archivo "aux2.txt" guardo las diferentes direcciones MAC
rem de los equipos de la red
echo. > aux2.txt
for /f "tokens=3" %%i in (aux1.txt) do (
rem compruebo si la MAC de la linea actual ya la he
rem metido antes en el archivo "aux2.txt"
find "%%i" aux2.txt > nul
if !errorlevel! == 1 echo %%i >> aux2.txt
)
rem Ya tengo metidas en el archivo "aux2.txt" todas las
rem direcciones MAC distintas de mi red
rem Y ahora cojo de una en una las direcciones mac de "aux2.txt"
rem y voy sacando por pantalla todos los dias en que han estado
rem conectadas
for /f "tokens=1" %%i in (aux2.txt) do (
echo El equipo con MAC %%i se ha conectado:
rem vacio el archivo "aux3.txt"
echo. > aux3.txt
rem este segundo for me sirve para mirar en "aux1.txt" las
rem fechas en que una direccion MAC se ha conectado a la red
for /f "tokens=5" %%x in ('find "%%i" aux1.txt') do (
rem y lo guardo en "aux3.txt"
echo %%x >> aux3.txt
)
rem vacio el archivo "aux4.txt"
echo. > aux4.txt
rem ahora en "aux3.txt" tengo las fechas en las que el ordenador
rem en cuestion se conecto a la red, pero hay muchas repetidas.
rem Las contare por fecha y lo sacaré por pantalla
for /f "tokens=1" %%n in (aux3.txt) do (
find "%%n" aux4.txt > nul
if !errorlevel! == 1 (
for /f "tokens=2 delims=:" %%x in ('find /c "%%n" aux3.txt') do (
set veces=%%x
)
echo %%n - !veces! veces >> aux4.txt
)
)
for /f "tokens=2 delims=:" %%x in ('find /c "/" aux4.txt') do (
echo %%x dias en total
)
for /f "tokens=2 delims=:" %%x in ('find /c "/" aux3.txt') do (
echo y un total de %%x veces
)
type aux4.txt
pause
echo.
)
cls
------------------------------------------
Por ultimo podemos hacer una especie de menú desde el que se llame a éstos 3 últimos archivos BAT:
MenuEstadisticas.bat
setlocal enabledelayedexpansion
color F0
cls
:menu
title Estadisticas de la Red
echo ...............MENU......................
echo.
echo 1.- Ver estadisticas de un dia determinado
echo 2.- Ver estadisticas de un mes determinado
echo 3.- Ver los dias que se ha conectado cada equipo
echo Q.- Salir
echo.
set/p op=Elige una opcion...
if %op% == 1 call estad1.bat
if %op% == 2 call estad2.bat
if %op% == 3 call estad3.bat
if %op% == q goto salir
goto menu
:salir
cls
title simbolo del sistema
del aux1.txt
del aux2.txt
del aux3.txt
del aux4.txt
color 0F
------------------------------------------------------------------------
No hay comentarios:
Publicar un comentario