martes, 29 de julio de 2008

Cómo registrar una librería (.DLL) en Windows

Hay veces, por motivos varios y diferentes cada uno de ellos, que necesitamos registrar (o "desregistrar") una librería concreta. No basta con moverla o borrarla ya que Windows sigue pensando que está ahí y la va a buscar.

¿Qué hacer en esos casos? Pues es muy sencillo.

Desde la línea de comandos (Inicio --> Ejecutar --> cmd --> intro, se abre la ventana de MS-DOS), ejecutamos

regsvr32 X:/ruta/a/la/libreria.dll

y hecho ;)

Además de registrarla, podéis decirle al sistema que la "descargue", que no la tenga en memoria. La opción para ello es -u (undo):

regsvr32 -u X:/ruta/a/la/libreria.dll

Y si lo que queremos es que no nos muestre ningún mensaje durante/al finalizar el registro, la opción es -s (silent):

regsvr32 -s X:/ruta/a/la/libreria.dll

Y ya está :)

viernes, 25 de julio de 2008

Logs en Microsoft Exchange Server 2007

¿Dos entradas en dos días? Cómo es eso??? Pues nada, yo, que pasaba por aquí :)

Es una tontería, supongo que como ayer, que me irá muy bien para tenerlo en cuenta en otro momento.
Parece ser que el Exchange 2007 es un poco diferente a sus versiones anteriores, pero por lo que he visto yo, la verdad es que está hecho más cara a que lo administre un usuario que otra cosa. Bastante sencillito y claro, al menos en lo que se refiere a los logs.

Para verlos, la cosa es muy fácil.

Abrimos la Consola de Administración de Exchange (en Inicio --> Programas --> Microsoft Exchange Server 2007), y en el menú de la izquierda vamos a Cuadro de Herramientas. Buscamos Seguimiento de mensajes y hacemos doble click para entrar. Se abre otra ventana donde primero comprueba que estén instaladas las actualizaciones necesarias (podemos cancelar la comprobación si queremos) y luego nos sale un enlace que dice Ir a la Pantalla de Bienvenida. Al hacer click, nos lleva a la página de Parámetros de Seguimientos de Mensajes, donde tendremos que jugar con todos los parámetros para hacer las búsquedas en los logs que necesitemos.

Tenemos las siguientes categorías para filtrar los logs:
Destinatario
Remitente
Servidor
EventID
MessageID
InternalMessageID
Asunto
Referencia
Inicio
Fin
donde las únicas categorías obligatorias son las dos últimas y el EventID (qué tipo de categoría: error, entrada de correo, salida de correo...)

La verdad es que es una interfaz muy amigable, y es muy cómodo trabajar con ella, aunque yo siga prefiriendo mi terminal, con mis letras en verde y amarillo, fondo negro semitransparente y el logo de Debian en el fondo...


Así da gusto trabajar

jueves, 24 de julio de 2008

Problemas con Httpd en Red Hat

Cuánto tiempo sin postear nada!!!
Ha sido una larga temporada, muchos cambios, mucho trabajo y muchos viajes... pero a ver si puedo ir posteando poquito a poco.


Esta vez vengo con una solución que podría haberme llevado muchas horas, pero con la que he dado pronto... afortunadamente.

He montado un servidor de hosting con Red Hat (sí, en el trabajo estamos cambiando a Red Hat), y me da problemas el httpd. Al arrancarlo, me da el siguiente error:

[warn] _default_ VirtualHost overlap on port 80, the first has precedence

El apache arrancaba sin problemas, pero no se cargaba bien la configuración. Tenía definidos varios Virtualhosts, pero parece que sólo se había cargado el primero. El resto redirigían a éste, como si no estuvieran configurados.

Después de hacer varios cambios en la configuración de las directivas de apache, he dado con el problema :)
Simplemente, he descomentado la siguiente línea:

NameVirtualHost *:80

y el resto es historia!
El apache se ha levantado, ha cargado todos los hosts virtuales y funciona a las mil maravillas...

martes, 20 de mayo de 2008

Matar procesos en Windows XP/2003

Imaginad que tenéis un script que te para y te vuelve a arrancar un servicio, pero por lo que sea, el proceso no se para de manera automática, sino que tarda unos segundos (o se quedan procesos pululando por el sistema). En este caso, rearrancar el servicio no te sirve de mucho porque o no se arranca bien, o te abre más instancias de las necesarias y siempre es un problema.

El caso es que lo ideal entre la parada y la arrancada del servicio sería matar los procesos que queden vivos de alguna manera. Yo he encontrado un comando (que por lo visto funciona en XP y en 2003 Server) que realiza esta tarea de una manera muy efectiva:

Desde la línea de comandos, la idea es matar el proceso. Sabiendo el nombre exacto (notepad.exe, winword.exe, firefox.exe, iexplore.exe), podemos matarlo y quedarnos más anchos que largos...
Inicio --> Ejecutar --> cmd (Aceptar)

Microsoft Windows 2000 [Version 5.00.2195]
(C) Copyright 1985-2000 Microsoft Corp.

C:\Documents and Settings\Administrator> taskkill /IM nombre_del_proceso.exe

Y punto pelota.

De todas maneras, en algún caso me he encontrado con que no puede acabar con el proceso porque hay que forzarlo (usando la opción /F). En este caso, la forma correcta es:

taskkill /F /IM nombre_del_proceso.exe

O si lo queremos hacer con el Process ID (PID), lo hacemos así:

taskkill /PID pid_del_proceso_a_matar

Si queréis saber más utilidades de este comando, podéis usar la ayuda. La verdad es que es bastante versátil.

lunes, 12 de mayo de 2008

Windows Vista y Telnet

Por defecto, Windows Vista no trae habilitadas muchas funciones básicas para administradores de sistemas, como puede ser el servicio SNMP o el protocolo TELNET. Habilitarlos es algo relativamente sencillo, pero bastante importante si, como en mi caso, nos dedicamos al área de networking.

Se trata de hacer
Inicio --> Configuración --> Panel de Control --> Programas y Características --> (menú izquierda) Activar o desactivar las características de Windows

Esperamos a que se cargue la ventana y activamos/desactivamos las opciones que nos interesen. En este caso (para activar el telnet) yo habilito las opciones de

Servidor Telnet
Cliente Telnet

y para el caso del SNMP simplemente habilitamos la Característica SNMP.

Aceptamos y esperamos a que se instalen los servicios requeridos y punto pelota.

viernes, 9 de mayo de 2008

Alta de usuario en SQL Server (Enterprise Manager 2005)

Este post va dedicado a mí: esta mañana nos hemos pasado una hora para una tontería tan tonta que casi me da vergüenza aceptarlo. Pero bueno, como de los errores se aprende, no me arrepiento.

A ver, abrimos el SQL Enterprise Managerm en mi caso

Inicio --> Programas --> Microsoft SQL Server --> Administrador Coporativo

y desplegamos hasta localizar la carpeta Seguridad. La desplegamos también y nos vamos a Inicios de Sesión y (botón derecho -->) Nuevo Inicio de Sesión.

El usuario que vamos a crear será sólo para SQL, nada que ver con la autentificación Windows, así que en Nombre ponemos el nombre que hayamos pensado y habilitamos la opción "Autentificación de SQL Server" y escribimos la contraseña que queramos. En Base de Datos (en el apartado Predeterminado) seleccionamos la base de datos (la principal si son más de una) para la que este usuario tendrá permisos (si no está porque aún no la has dado de alta, te das cuenta que has empezado la casa por el tejado).

Buscamos la pestaña Acceso a Base de Datos y seleccionamos todas las BBDD a las que tenga que tener acceso, y el nivel de acceso. Cuando marcamos una BDD, en el recuadro de abajo aparecen las diferentes funciones que puede hacer el usuario. Por defecto, viene marcada public, pero si queremos que el usuario pueda administrarla marcaremos bd_owner.

[Aquí había estado mi fallo: había marcado una opción que no tocaba]

Salvaremos, saldremos y ya estará el usuario creado. Si queréis ver si este usuario tiene permisos realmente, abrid el Analizador de Consultas, logaros con ese usuario y haced alguna consulta contra alguna de las BDD a las que tenga acceso, del estilo
select * from tabla

y para que se ejecute, clickad en el play que hay arriba. Si no devuelve ningún error, está todo bien. Si no, repasad vuestros pasos.

Para dar de alta una base de datos: Fácil, desde el propio Enterprise Manager, váis a Bases de Datos y (botón derecho -->) Nueva Base de Datos. Se abre una ventana, donde tendréis que poner el nombre de la nueva base de datos. Y (no es necesario) también podéis indicarle dónde queréis que el sistema guarde los archivos de la base de datos y el registro de transacciones. El primero son los datos de la base de datos, y el segundo un registro de los movimientos que se hacen en esa base de datos. A veces va bien poder elegir dónde los guarda, sobre todo cuando en la unidad C: (donde se guarda normalmente por defecto) no hay mucho espacio, ya que esto ocupa mucho espacio.

Una vez creada la base de datos, si queremos importar algún backup, nos pondremos encima y (botón derecho -->) Todas las tareas --> Restaurar Base de Datos. Si de la copia de seguridad tenemos un archivo .BAK (lo más normal si es un backup del propio SQL), seleccionaremos Desde Dispositivo, y en Dispositivo seleccionaremos el archivo .BAK que queramos restaurar. Y aceptar, y él sólo restaura. Si veis que os da algún error, es probable (si el backup era de otra máquina, con otra configuración) que vosotros no tengáis la misma estructura, y, por ejemplo, que en lugar de guardar los archivos en la D: como se hacía en la otra máquina, los guardéis en la C. Sólo tendréis que cambiarlo en la pestaña Opciones. Simplemente habrá que tener en cuenta estos pequeños detalles y no habrá problema para restaurar.

Ale, cómo me he enrollado. Espero que quede claro. Cualquier duda, dejadme un comentario!!!!

martes, 6 de mayo de 2008

Programar la parada/arranque de un servicio en Windows

Después de tiempo sin postear nada, aquí va una pequeña perla de sabiduría...
Algo bastante sencillo y que os puede sacar de algún apuro en algún momento.

Para programar la parada/arranque de un servicio de Windows, vamos a crear un archivo bat (lo_que_sea.bat) muy sencillito, e incluiremos

NET STOP "xxxxx"
NET START "xxxxx"

donde xxxxx es el nombre del servicio de Windows que queremos parar (NET STOP) o arrancar (NET START). El nombre es el que aparece en Servicios, no el nombre del ejecutable ni nada de eso, así de sencillo.

Bueno, yo aquí lo he hecho de manera que el script primero pararía el servicio y después lo arrancaría, lo que sería equivalente a reiniciarlo.

Y una vez tenemos el script y hemos comprobado que funciona, habría que programarlo para que se ejecute cuando sea requerido. Esto lo hacemos con la función de Tareas Programadas

Inicio --> Programas --> Accesorios --> Herramientas de Sistema --> Tareas Programadas

indicándole qué queremos ejecutar (el .bat) y cuando. Y ya está.
Estad un poco por el tema al menos la primera vez que se tenga que ejecutar, para comprobar que se hace bien.

Y por hoy, ya es bastante...! Con esto y un bizcocho...