Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - Zomkar

#1
Scripting / [Aporte][Batch] Funcion ID de red
21 Mayo 2014, 04:32 AM
Bueno pues el funcionamiento de este script (llamemosle funcion) es el de averiguar la IP y a partir de esa información deducir el ID de red.

El ID de red para el que no lo sepa es sencillamente el rango de IP posibles en una red:
p. ej: en una red tipica clase C domestica, si la IP es 192.168.1.10 pues el ID es 192.168.1.0

No es que sea nada revolucionario pero si que si a alguien le hace falta le puede ahorrar el trabajo. La idea es usar éste codigo con call. (modificarlo)

Ahi va:

@echo off
REM PARA WIN7
REM LINEAS QUE PONE DEBUG SON LINEAS QUE HAY QUE DESCOMENTAR
REM PARA PODER ENCONTRAR FALLOS AL HACER EL CODIGO

setlocal EnableDelayedExpansion

set ip_address_string="IPv4"
Set IpIsDefined=0
set yo_cuento=0
SET "direccionIp="

call :GetIp
REM - PARA DEBUG - ECHO !direccionIp!

call :SetNetwId
pause
exit

:GetIp
echo Network Connection Test
for /f "usebackq tokens=2 delims=:" %%G in (`ipconfig ^| findstr /c:%ip_address_string%`) do (
SET "direccionIp=%%G"
SET /A yo_cuento=!yo_cuento! + 1
IF !yo_cuento! GTR 3 goto :bucle_infinito_Getip
REM como se usa la expansion de variables - ver inicio del batch
REM es necesario hacer la comprobacion de un modo similar al que vemos debajo, para que IF
REM funcione como deseamos aunque no haya valores asignados
IF "!direccionIp!"=="" goto :GetIp
goto :eof
)

:SetNetwId
REM funcion pensada para redes clase C o sea donde nos importan los 3 primeros tokens
REM modificable a conveniencia
set yo_cuento=0
FOR /F  "usebackq tokens=1,2,3,4 delims=." %%H IN (`echo !direccionIp!`) do (
SET /A yo_cuento=!yo_cuento! + 1
SET TokenIp!yo_cuento!=%%H
SET /A yo_cuento=!yo_cuento! + 1
SET TokenIp!yo_cuento!=%%I
SET /A yo_cuento=!yo_cuento! + 1
SET TokenIp!yo_cuento!=%%J
SET /A yo_cuento=!yo_cuento! + 1
SET TokenIp!yo_cuento!=%%K
)
REM Quitar REM para DEBUG
REM ECHO !TokenIp1!
REM ECHO !TokenIp2!
REM ECHO !TokenIp3!
REM ECHO !TokenIp4!
Set NetworkId=!TokenIp1!.!TokenIp2!.!TokenIp3!.0
ECHO !NetworkId!
goto :eof

:bucle_infinito_Getip
Echo Imposible detectar IP, Cerrando..  
PAUSE  
EXIT


También es para que me deis alguna idea si la teneis, de cosas que tenga que controlar para evitar errores y no haya controlado, etc (dentro de lo razonable porque es batch).

No usé el coloreador de código porque no funciona bien y me lo modifica de:
SET TokenIp!yo_cuento!=%%H
a:
SET TokenIp!yo_cuento!=%% style="color: #448888;">H

Alguien sabe porque?

Bueno gracias y un saludo!!

PS: ahora que lo pienso debe ser un fallo bueno pero no creo que sea importante, o si?