Si tenemos que administrar uno o varios servidores web, hay ocasiones en las que necesitaremos inventariar de manera rápida y sencilla qué sitios web y dominios tenemos albergados en nuestras máquinas.
Obviamente una forma sencilla de verlo es ir a través del administrador de Internet Information Server y ver qué sitios tenemos allí. Pero el problema de eso es que no podemos manipular la lista de manera alguna y, sobre todo, no nos da una idea clara de qué dominios tenemos asociados a cada sitio web, salvo que vayamos entrando uno a uno a comprobarlos.
Sería de mucha utilidad poder listar toda esta información de manera automática y rápida siempre que lo necesitemos.
Por suerte para nosotros, IIS en todas sus versiones os ofrece una manera sencilla de hacerlo. Veamos cómo...
Listado de sitios y dominios en IIS 6
En Internet Information Server 6 se incluían unas herramientas de línea de comandos escritas en VBScript que nos permiten gestionar de mil maneras el servidor. Una de ellas, ubicada en la ruta del sistema es iisweb.vbs, y sirve precisamente para eso: enumerar sitios web.
Por ello, en IIS6, lo único que tenemos que hacer es abrir una línea de comandos y escribir lo siguiente:
cscript %WINDIR%\System32\iisweb.vbs /query
Esto nos devolverá un listado con la siguiente estructura:
Microsoft (R) Windows Script Host versi¢n 5.6
Copyright (C) Microsoft Corporation 1996-2001. Reservados todos los derechos.
Conectar al servidor...Finalizado.
Nombre sitio (Ruta metabase) Estado IP Puerto Host
==============================================================================
Sitio Web predeterminado (W3SVC/1) DETENIDO Todos 80 N/D
Mi Sitio web 1 (W3SVC/107743231) INICIADO xxx.xxx.xx.xxx 80 www.dominio.com
Mi sitio web 2 (W3SVC/119357723) INICIADO xxx.xxx.xx.xxx 80 www.dominio2.com
yyy.yyy.yy.yyy 80 www.dominio3.com
Como vemos nos devuelve una tabla de elementos que podemos importar más o menos fácilmente en una hoja Excel o en una base de datos. Además, si un sitio tiene más de una IP y dominio asociados nos los devuelve a continuación en líneas adicionales.
Y digo "más o menos fácil " a lo de la importación porque en realidad, y aunque pueda parecer lo contrario, no se trata de campos de ancho fijo, y si el nombre del sitio + ruta en la metabase son muy largos nos dificultará la importación porque simplemente excede el ancho inicial que tenía reservado. Esto nos puede dar problemas a la hora de importarlos.
Por cierto, si queremos que los resultados se guarden automáticamente en un archivo, lo único que hay que hacer es añadir un ">" y una ruta después de la línea de comandos anterior, así por ejemplo:
cscript %WINDIR%\System32\iisweb.vbs /query > C:\Temp\Listado_Sitios_Servidor.txt
Listado de sitios y dominios en IIS 7.0 o posterior
En Internet Information Server 7.x o posterior podemos conseguir algo muy similar pero utilizando una herramienta diferente y además nos devuelve la información en otro formato también.
En el caso de Windows Server 2008 o posterior existe una herramienta de línea de comandos llamada Appcmd.exe (versión IIS 7.x y versión IIS 8) que está ubicada en C:\windows\system32\inetsrv en el caso de servidores de 64 bits, y en C:\Windows\Syswow64\inetsrv en el caso de sistemas de 32 bits (raros hoy en día).
Lo único que tenemos que hacer en este caso es abrir una línea de comandos, navegar con instrucciones "cd" hasta el directorio en cuestión, y escribir lo siguiente:
appcmd list site
¡Listo! Nos devolverá un listado de sitios web con el siguiente formato:
SITE "MiSitio1" (id:1,bindings:http/*:80:www.dominio.com,http/xxx.xxx.xx.xx:80:www.dominio.com,state:Started)
SITE "MiOtroSitio" (id:2,bindings:http/*:80:www.dominio2.com,state:Started)
En este caso el formato es completamente diferente. Los campos se separan con espacios en blanco y la información sobre cada sitio web (sus dominios e IPs) se separan por comas dentro y se guardan dentro de paréntesis, añadiendo el estado al final. Esto hace que sea más complicado realizar la importación a una hoja de cálculo o una base de datos.
Por supuesto podemos meterlos directamente en disco usando el ">", como antes:
appcmd list site > C:\Temp\Listado_Sitios_Servidor.txt
¡Espero que te resulte útil!