|
" Hay la misma diferencia entre un sabio y un ignorante que entre un hombre vivo y un cadáver " - Aristóteles - ![]() |
Computerfacil.com |
Chat
Fotos
Últimos Posts
Ayuda
Búsqueda
Miembros
Calendario
|
| Bienvenido, invitado ( Identificarse | Registrarse ) | Reenviar mensaje de validación |
|
|
Forista del Mes: dejavi
|
![]() ![]() ![]() |
| CIRUS-110 |
Publicado: Dec 1 2005, 04:13 PM
|
|
* Puxa Puxa * Grupo: Colaboradores Mensajes: 1.165 Miembro nº: 2.577 Registrado: 14-May 05 |
Cómo ver la lista de programas que tienen puertos tcp/ip abiertos (en escucha) y el programa que los usa.
Este TIP es válido solamente para WindowsXP Profesional, en la versión Home no existe el programa tasklist. Ejecutar en una ventana de comandos (cmd.exe): for /F "usebackq tokens=4,5" %i in (`netstat -ao ^| find "LISTENING"`) do @for /F "usebackq tokens=1,2" %k in (`tasklist`) do @if %j == %l @echo %j %k NOTA: Sed cuidadosos al teclear esto, respetando los espacios en blanco. Si quieremos crearnos un .bat con la linea anterior, debereis sustituir cada % por %%. Es decir, nuestro .bat quedaría: @echo off for /F "usebackq tokens=4,5" %%i in (`netstat -ao ^| find "LISTENING"`) do @for /F "usebackq tokens=1,2" %%k in (`tasklist`) do @if %%j == %%l @echo %%j %%k pause Este comando no está optimizado en tiempo de ejecución ya que llama excesivas veces al programa tasklist: lo llama una vez por cada puerto abierto, pero funciona perfectamente y sirve para ver como ejemplo de la potencia del lenguaje de comandos. Para mejorar su tiempo de respuesta nos podemos ahorrar estas llamadas, realizará una sola si el .bat lo hacemos así : @echo off tasklist > %temp%\tasklist.tmp for /F "usebackq tokens=4,5" %%i IN (`netstat -ao ^| find "LISTENING"`) do @for /F "usebackq tokens=1,2" %%k in (%temp%\tasklist.tmp) do @if %%j == %%l @echo %%j %%k del %temp%\tasklist.tmp >nul pause NOTA: Lo que está en la línea del "for".... es UNA sola línea. Bien, la salida de ese comando para ver los procesos que estan en escucha en tcp/ip, muestra el número del proceso y el proceso que tiene abierto un puerto en escucha, pero no nos muestra el número de puerto que está abierto. Para ver el número de puerto y el proceso asociado, el comando es: for /F "usebackq tokens=2,3,4,5,6,7 delims=: " %g in (`netstat -nao ^| find "LISTENING"`) do @for /F "usebackq skip=2 tokens=1,2" %m IN (`tasklist`) do @if %l == %n @echo %h %m Y si queremos crearnos un .bat que lo haga: @echo off for /F "usebackq tokens=2,3,4,5,6,7 delims=: " %%g in (`netstat -nao ^| find "LISTENING"`) do @for /F "usebackq skip=2 tokens=1,2" %%m IN (`tasklist`) do @if %%l == %%n @echo %%h %%m pause NOTA: Lo que está en la línea for, es una SOLA línea. Se pueden hacer auténticas virguerías con el uso de comandos. En la ayuda de XP viene perfectamente detallado, y en el XP Profesional viene además como una ayuda aparte que puede verse ejecutando: %windir%\hh.exe ntcmds.chm Jose Manuel Tella Llop http://www.multingles.net/jmt.htm |
![]() |
![]() ![]() ![]() |
|
|
|