@echo off
rem ==========================================================================
rem OFGNetstat v1.0 (12-04-2007)
rem
rem DETALLES:
rem
rem Muestra una lista en formato HTML de las conexiones activas.
rem Basado en el comando "NETSTAT.EXE".
rem
rem
rem PROGRAMADO POR:
rem
rem Óscar Fernández González a.k.a. Osc@rNET
rem
rem http://www.ofgsoftware.com (postmaster@ofgsoftware.com)
rem
rem
rem LICENCIA:
rem
rem El modelo de desarrollo que sigue este programa es de "Software Libre".
rem Puede ser usado, copiado, estudiado, modificado y redistribuido
rem libremente.
rem
rem Si haces alguna modificación o mejora, agradecería de tu parte que
rem me la mandases e hicieras una mención sobre el origen del código,
rem citando mí nombre y sitio Web, aunque no estás obligado a ello.
rem
rem
rem SOPORTE:
rem
rem Osc@rNET no ofrece ningún tipo de soporte sobre este Software; se
rem suministra "TAL CUAL" y sin garantías de ninguna especie.
rem
rem ==========================================================================
rem --------------------------------------------------------------------------
rem DEFINICION DE VARIABLES
rem --------------------------------------------------------------------------
setlocal
set _Opcion=
set _HTMLFile=%TEMP%\%RANDOM%.html
set _Netstat=%windir%\system32\netstat.exe
set _IE=%ProgramFiles%\Internet Explorer\iexplore.exe
set _MF=%ProgramFiles%\Mozilla FireFox\firefox.exe
set _NE=%ProgramFiles%\Netscape\Netscape\Netscp.exe
set _ProgramName=OFGNetstat
set _ProgramVersion=v1.0 (12-04-2007)
set _ProgramLicense=[Software Libre]
set _ProgramCopyright=Programado por Osc@rNET - http://www.ofgsoftware.com
set _ProgramTitle=%_ProgramName% %_ProgramVersion% %_ProgramLicense%
rem --------------------------------------------------------------------------
rem INICIO
rem --------------------------------------------------------------------------
:Inicio
color 17
cls
echo %_ProgramTitle%
echo %_ProgramCopyright%
echo.
echo Muestra una lista en formato HTML de las conexiones activas.
echo Basado en el comando "NETSTAT.EXE".
echo ________________________________________________________________________________
rem --------------------------------------------------------------------------
rem COMPROBAR CREACION DE ARCHIVO TEMPORAL HTML
rem --------------------------------------------------------------------------
:Comprobar_HTMLFile
echo OK > %_HTMLFile%
del %_HTMLFile% > nul
if not exist %_HTMLFile% goto Comprobar_HTMLFile_FIN
echo ERROR: ¡Ejecución abortada¡
echo.
echo ¡No se puede crear el archivo temporal "%_HTMLFile%"!
echo.
echo.
echo.
echo PULSE UNA TECLA PARA SALIR...
pause > nul
goto FIN
:Comprobar_HTMLFile_FIN
rem --------------------------------------------------------------------------
rem COMPROBAR COMANDO "NETSTAT.EXE"
rem --------------------------------------------------------------------------
:Comprobar_Netstat
if exist "%_Netstat%" goto Comprobar_Netstat_FIN
echo ERROR: ¡Ejecución abortada¡
echo.
echo ¡No existe el comando "%_Netstat%" en el sistema!
echo.
echo.
echo.
echo PULSE UNA TECLA PARA SALIR...
pause > nul
goto FIN
:Comprobar_Netstat_FIN
rem --------------------------------------------------------------------------
rem COMPROBAR NAVEGADORES DISPONIBLES EN EL SISTEMA
rem --------------------------------------------------------------------------
:Comprobar_Navegadores
if exist "%_IE%" (set _HTMLViewer=%_IE%) & (goto Comprobar_Navegadores_FIN)
if exist "%_MF%" (set _HTMLViewer=%_MF%) & (goto Comprobar_Navegadores_FIN)
if exist "%_NE%" (set _HTMLViewer=%_NE%) & (goto Comprobar_Navegadores_FIN)
echo ERROR: ¡Ejecución abortada¡
echo.
echo ¡No existe un navegador de internet compatible en el sistema!
echo.
echo ^* Internet Explorer (no existe):
echo %_IE%
echo.
echo ^* Mozilla FireFox (no existe):
echo %_MF%
echo.
echo ^* Netscape (no existe):
echo %_NE%
echo.
echo.
echo.
echo PULSE UNA TECLA PARA SALIR...
pause > nul
goto FIN
:Comprobar_Navegadores_FIN
rem --------------------------------------------------------------------------
rem MENU GENERAL
rem --------------------------------------------------------------------------
:Menu_General
echo - MENU GENERAL -
echo.
echo [1] Informe sobre Conexiones (IP's).
echo [2] Informe sobre Conexiones (Nombres).
echo [3] Salir.
echo.
echo.
set /p _Opcion= Selecciona una opción:
if "%_Opcion%"=="1" goto Generar_Informe
if "%_Opcion%"=="2" goto Generar_Informe
if "%_Opcion%"=="3" goto FIN
goto Inicio
rem --------------------------------------------------------------------------
rem GENERAR INFORME
rem --------------------------------------------------------------------------
:Generar_Informe
echo ________________________________________________________________________________
echo Generando informe. Espere un momento, por favor...
echo.
set _RETURN=:Volver_HTML_Head
goto HTML_Head
:Volver_HTML_Head
echo ^<body^> >> %_HTMLFile%
echo ^<div align="center" class="titulo"^>%_ProgramTitle%^</div^> >> %_HTMLFile%
echo ^<div align="center" class="subtitulo"^>Programado por ^Óscar Fern^ández Gonz^ález a.k.a. Osc@rNET^</div^> >> %_HTMLFile%
echo ^<div align="center" class="subtitulo"^>^<a href="http://www.ofgsoftware.com" target="_blank"^>http://www.ofgsoftware.com^</a^>^</div^> >> %_HTMLFile%
echo ^<br /^> >> %_HTMLFile%
echo ^<br /^> >> %_HTMLFile%
if "%_Opcion%"=="1" goto Informe1
if "%_Opcion%"=="2" goto Informe2
rem --------------------------------------------------------------------------
:Informe1
echo ^<div align="center" class="subtitulo"^>^<u^>INFORME SOBRE CONEXIONES^</u^>^</div^> >> %_HTMLFile%
echo ^<br /^> >> %_HTMLFile%
echo ^<table align="center" border="0" bgcolor="#949E9C" cellpadding="0" cellspacing="1"^> >> %_HTMLFile%
echo ^<tr bgcolor="#CCCCCC"^> >> %_HTMLFile%
echo ^<td align="center" nowrap="nowrap"^>^<strong^>PROTOCOLO^</strong^>^</td^> >> %_HTMLFile%
echo ^<td align="center" nowrap="nowrap"^>^<strong^>DIRECCI^ÓN^<br /^>LOCAL^</strong^>^</td^> >> %_HTMLFile%
echo ^<td align="center" nowrap="nowrap"^>^<strong^>DIRECCI^ÓN^<br /^>REMOTA^</strong^>^</td^> >> %_HTMLFile%
echo ^<td align="center" nowrap="nowrap"^>^<strong^>P.I.D.^</strong^>^</td^> >> %_HTMLFile%
echo ^<td align="center" nowrap="nowrap"^>^<strong^>ESTADO^</strong^>^</td^> >> %_HTMLFile%
echo ^</tr^> >> %_HTMLFile%
for /f "usebackq tokens=1-5 skip=4" %%A in (`netstat -a -n -o`) do ((
echo ^<tr bgcolor="#EBEBEB"^> >> %_HTMLFile% ) & (
echo ^<td align="center" nowrap="nowrap"^>%%A^</td^> >> %_HTMLFile% ) & (
echo ^<td align="center" nowrap="nowrap"^>%%B^</td^> >> %_HTMLFile% ) & (
echo ^<td align="center" nowrap="nowrap"^>%%C^</td^> >> %_HTMLFile% ) & (
if not "%%E"=="" ((
echo ^<td align="center" nowrap="nowrap"^>%%E^</td^> >> %_HTMLFile% ) & (
echo ^<td align="center" nowrap="nowrap"^>%%D^</td^> >> %_HTMLFile% )
) else ((
echo ^<td align="center" nowrap="nowrap"^>%%D^</td^> >> %_HTMLFile% ) & (
echo ^<td align="center" nowrap="nowrap"^>-o-^</td^> >> %_HTMLFile% )
)) & (
echo ^</tr^> >> %_HTMLFile%))
)
echo ^</table^> >> %_HTMLFile%
echo ^<br /^> >> %_HTMLFile%
echo ^<br /^> >> %_HTMLFile%
echo ^<br /^> >> %_HTMLFile%
goto Fin_Informe
rem --------------------------------------------------------------------------
:Informe2
echo ^>^> Resolviendo nombres. Esto puede tardar unos minutos...
echo.
echo ^<div align="center" class="subtitulo"^>^<u^>INFORME SOBRE CONEXIONES^</u^>^</div^> >> %_HTMLFile%
echo ^<br /^> >> %_HTMLFile%
echo ^<table align="center" border="0" bgcolor="#949E9C" cellpadding="0" cellspacing="1"^> >> %_HTMLFile%
echo ^<tr bgcolor="#CCCCCC"^> >> %_HTMLFile%
echo ^<td align="center" nowrap="nowrap"^>^<strong^>PROTOCOLO^</strong^>^</td^> >> %_HTMLFile%
echo ^<td align="center" nowrap="nowrap"^>^<strong^>DIRECCI^ÓN LOCAL^</strong^>^</td^> >> %_HTMLFile%
echo ^<td align="center" nowrap="nowrap"^>^<strong^>DIRECCI^ÓN REMOTA^</strong^>^</td^> >> %_HTMLFile%
echo ^<td align="center" nowrap="nowrap"^>^<strong^>P.I.D.^</strong^>^</td^> >> %_HTMLFile%
echo ^<td align="center" nowrap="nowrap"^>^<strong^>ESTADO^</strong^>^</td^> >> %_HTMLFile%
echo ^</tr^> >> %_HTMLFile%
for /f "usebackq tokens=1-5 skip=4" %%A in (`netstat -a -o`) do ((
echo ^<tr bgcolor="#EBEBEB"^> >> %_HTMLFile% ) & (
echo ^<td align="center" nowrap="nowrap"^>%%~A^</td^> >> %_HTMLFile% ) & (
echo ^<td align="center" nowrap="nowrap"^>%%~B^</td^> >> %_HTMLFile% ) & (
echo ^<td align="center" nowrap="nowrap"^>%%~C^</td^> >> %_HTMLFile% ) & (
if not "%%E"=="" ((
echo ^<td align="center" nowrap="nowrap"^>%%E^</td^> >> %_HTMLFile% ) & (
echo ^<td align="center" nowrap="nowrap"^>%%D^</td^> >> %_HTMLFile% )
) else ((
echo ^<td align="center" nowrap="nowrap"^>%%D^</td^> >> %_HTMLFile% ) & (
echo ^<td align="center" nowrap="nowrap"^>-o-^</td^> >> %_HTMLFile% )
)) & (
echo ^</tr^> >> %_HTMLFile%))
)
echo ^</table^> >> %_HTMLFile%
echo ^<br /^> >> %_HTMLFile%
echo ^<br /^> >> %_HTMLFile%
echo ^<br /^> >> %_HTMLFile%
goto Fin_Informe
rem --------------------------------------------------------------------------
:Fin_Informe
echo ^<div align="center" class="detalle"^>^<i^>^*Informe generado en la computadora "%COMPUTERNAME%" por el usuario "%USERDOMAIN%\%USERNAME%" a las %TIME% del %DATE%^</i^>^</div^> >> %_HTMLFile%
echo ^</body^> >> %_HTMLFile%
echo. >> %_HTMLFile%
echo ^</html^> >> %_HTMLFile%
echo ¡Informe generado correctamente!.
echo.
echo NOTA: Para regresar al menú cierre la ventana del informe (navegador).
"%_HTMLViewer%" %_HTMLFile%
del %_HTMLFile% > nul
goto Inicio
rem --------------------------------------------------------------------------
rem IMPRIMIR CABECERA HTML
rem --------------------------------------------------------------------------
:HTML_Head
echo ^<!DOCTYPE html > %_HTMLFile%
echo PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" >> %_HTMLFile%
echo "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"^> >> %_HTMLFile%
echo. >> %_HTMLFile%
echo ^<html xmlns="http://www.w3.org/1999/xhtml"^> >> %_HTMLFile%
echo. >> %_HTMLFile%
echo ^<head^> >> %_HTMLFile%
echo. >> %_HTMLFile%
echo ^<title^>%_ProgramTitle%^</title^> >> %_HTMLFile%
echo. >> %_HTMLFile%
rem charset=iso-8859-1
rem echo ^<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" /^> >> %_HTMLFile%
echo. >> %_HTMLFile%
echo ^<style type="text/css"^> >> %_HTMLFile%
echo ^<!-- >> %_HTMLFile%
echo body { >> %_HTMLFile%
echo background-color: #ECE9D8; >> %_HTMLFile%
echo margin: 20px; >> %_HTMLFile%
echo font-family: Verdana, Arial, Helvetica, sans-serif; >> %_HTMLFile%
echo font-size: 11px; >> %_HTMLFile%
echo color: #185184; >> %_HTMLFile%
echo } >> %_HTMLFile%
echo. >> %_HTMLFile%
echo td { >> %_HTMLFile%
echo padding: 5px; >> %_HTMLFile%
echo } >> %_HTMLFile%
echo. >> %_HTMLFile%
echo .titulo { >> %_HTMLFile%
echo font-family: Verdana, Arial, Helvetica, sans-serif; >> %_HTMLFile%
echo font-size: 16px; >> %_HTMLFile%
echo font-weight: bold; >> %_HTMLFile%
echo color: #0046D5; >> %_HTMLFile%
echo } >> %_HTMLFile%
echo. >> %_HTMLFile%
echo .subtitulo { >> %_HTMLFile%
echo font-family: Verdana, Arial, Helvetica, sans-serif; >> %_HTMLFile%
echo font-size: 12px; >> %_HTMLFile%
echo font-style: italic; >> %_HTMLFile%
echo font-weight: bold; >> %_HTMLFile%
echo color: #0046D5; >> %_HTMLFile%
echo } >> %_HTMLFile%
echo. >> %_HTMLFile%
echo .detalle { >> %_HTMLFile%
echo font-family: Verdana, Arial, Helvetica, sans-serif; >> %_HTMLFile%
echo font-size: 10px; >> %_HTMLFile%
echo color: #185184; >> %_HTMLFile%
echo } >> %_HTMLFile%
echo ^--^> >> %_HTMLFile%
echo ^</style^> >> %_HTMLFile%
echo. >> %_HTMLFile%
echo ^</head^> >> %_HTMLFile%
echo. >> %_HTMLFile%
goto %_RETURN%
rem --------------------------------------------------------------------------
rem FIN
rem --------------------------------------------------------------------------
:FIN
endlocal
color
cls