3/12/2011


Explicamos cómo crear una imagen de un disco duro o de una partición específica con el software open source y free (gratuito) Clonezilla. Mostramos cómo crear un CD de arranque con Clonezilla (un Live CD).


 

Recomendaciones importantes y situación de partida

Recomendaciones importantes para la clonación de disco a imagen

Antes de iniciar cualquier proceso de clonación de unidades es muy recomendable hacer copia de seguridad de los datos. Este tipo de acciones suelen ser peligrosas e implican un riesgo potencial para los datos del equipo. Por ejemplo, si un usuario inexperto selecciona restaurar una imagen en vez de hacer una imagen puede provocar pérdida de los datos de la partición de destino.
En el siguiente enlace se muestran varios artículos del Proyecto Ajpdsoft sobre copias de seguridad:

Situación de partida

Hemos generado en el laboratorio del Proyecto AjpdSoft, mediante virtualización, una imagen de un equipo con dos particiones. En la partición primaria C hemos instalado Microsoft Windows XP:
AjpdSoft Situación de partida y recomendaciones importantes
Es importante mencionar que si seleccionamos el método de clonación de disco a disco o de partición a partición, la partición o disco de destino debe ser de tamaño igual o mayor que la origen.
 

Decarga y preparación del Live CD con Clonezilla

En primer lugar descargaremos el fichero ISO para realizar el CD de arranque con Clonezilla, para ello abriremos un navegador web y accederemos a la URL:
http://clonezilla.org/downloads.php
Seleccionaremos "Download stable releases (.iso/zip), podremos elegir entre basado en Debian o basado en Ubuntu. En nuestro caso seleccionaremos "Basado en Debian":
AjpdSoft Decarga y preparación del Live CD con Clonezilla
Seleccionaremos el fichero de descarga que más se adapte a nuestras necesidades, en nuestro caso "clonezilla-live-1.2.6.59-i686.izo (de 130 MB):
AjpdSoft Decarga y preparación del Live CD con Clonezilla
Marcaremos "Guardar archivo" y pulsaremos "Aceptar" para iniciar la descarga:
AjpdSoft Decarga y preparación del Live CD con Clonezilla
Tras descargar el archivo ISO generaremos un CD como indicamos aquí:
O bien este otro:

Crear imagen de un disco duro o partición a fichero con Clonezilla

Una vez creado el Live CD con Clonezilla lo introduciremos en el lector de CD/DVD, prepararemos la BIOS para que el equipo arranque desde el CD como indicamos en el siguiente artículo:
Se iniciará Clonezilla, seleccionaremos "Clonezilla live (Default settings, VGA 800x600)" y pulsaremos INTRO:
AjpdSoft Crear imagen de un disco duro con Clonezilla


Nota: puesto que Clonezilla se ejecuta en modo texto (no gráfico) no funcionará el ratón, por lo que tendremos que seleccionar las distintas opciones moviéndonos con las teclas de cursor y pulsando INTRO para seleccionar.
Seleccionaremos el idioma para Clonezilla, en nuestro caso "es_ES.UTF-8 Spanish | Español", pulsaremos INTRO:
AjpdSoft Crear imagen de un disco duro con Clonezilla
Seleccionaremos el tipo de teclado (mapa de teclado) si es necesario, en nuestro caso seleccionaremos "No tocar el mapa de teclado" y pulsaremos INTRO (Ok):
AjpdSoft Crear imagen de un disco duro con Clonezilla
A continuación seleccionaremos "Start_Clonezilla Iniciar Clonezilla" y pulsaremos INTRO:
AjpdSoft Crear imagen de un disco duro con Clonezilla


El asistente de Clonezilla nos muestra la posibilidad de iniciar el modo consola para introducir comandos Linux con la opción "Enter_shell Introduzca línea de comandos del prompt".
A continuación seleccionaremos modo en que usaremos Clonezilla, las posibilidades:
  • device-image Disco/Partición a/desde Imagen: guarda un disco duro o una partición de un disco duro en una imagen (fichero) o bien restaura una imagen en fichero a un disco duro o partición de disco duro.
  • device-device Disco/Partición a Disco/Partición: imagen de disco duro a disco duro (o de partición a partición).
En nuestro caso, puesto que queremos hacer una imagen de una partición a un fichero seleccionaremos "device-image Disco/Partición a/desde Imagen":
AjpdSoft Crear imagen de un disco duro con Clonezilla
Ahora seleccionaremos dónde se encuentra o en dónde queremos guardar la imagen que se generará del disco duro o partición. Las posibilidades son:
  • local_dev: usará un dispositivo local como destino de la imagen del disco duro o partición. Podrá ser un disco duro (una partición de un disco duro) o un dispositivo USB. Si queremos guardar la imagen a un dispositivo USB deberemos conectarlo en el siguiente paso (cuando lo pida).
  • ssh_server: realizará la copia de la imagen a un PC remoto a través de la red usando el protocolo SSH. El equipo de destino debe tener instalado y activo este protocolo, como indicamos en el siguiente artículo: Cómo instalar y configuar SSH en GNU Linux Ubuntu con OpenSSH.
  • samba_server: al igual que para ssh_server, aunque en este caso usará samba para la conexión, el equipo remoto destino ha de tener habilitado este protocolo como indicamos en el siguiente artículo: Instalación, configuración de Samba y Swat, compartir carpeta en Linux Ubuntu.
  • nfs_server: realizará la conexión con un servidor NFS.
  • enter_shell: accederá a la línea de comandos del prompt de Linux.
  • skip: usará /home/partimag existente (copiará a memoria).
En nuestro caso, puesto que disponemos de un disco duro con dos particiones y queremos generar la imagen de una de las particiones y guardarla en la otra seleccionaremos "local_dev" y pulsaremos INTRO:
AjpdSoft Crear imagen de un disco duro con Clonezilla
A continuación, si hemos seleccionado la opción "local_dev" y queremos hacer la copia del disco duro o partición a un pendrive (lápiz de memoria USB) lo conectaremos ahora para que Clonezilla pueda montarlo y ser usado. Pulsaremos INTRO para continuar:
AjpdSoft Crear imagen de un disco duro con Clonezilla
A continuación seleccionaremos la partición de destino de la imagen. En nuestro caso disponemos de un disco duro con dos particiones:
  • sda1 de 42 GB: es la partición que contiene los datos y el sistema, es la partición de la que queremos hacer la imagen o copia de seguridad.
  • sdb1 de 42 GB: es la partición destino de la copia de seguridad o imagen. En esta partición se ubicarán los ficheros de la imagen.
Seleciccionaremos "sdb1" y pulsaremos INTRO:
AjpdSoft Crear imagen de un disco duro con Clonezilla


Con el texto: "Ahora necesita montar el dispositivo como /home/partimag (repositorio de imagen(es)) por lo que se debe leer o grabar la imagen en /home/partimag. No debe montar la partición de la que desee hacer la copia como /home/partimag. El nombre del disco es el nombre del dispositivo en GNU/Linux. La primera partición en el primer disco es "hda1" o "sda1", la segunda partición en el primer disco es "hda2" o "sda2", la primera partición en el segundo disco es "hdb1" o "sdb1" ... Si el sistema que desea salvar es MS Windows, normalmente C: será hda1 (para PATA) o sda1 (para PATA, SATA o SCSI), y D: será hda2 (o sda2), hda5 (o sda5...:
A continuación seleccionaremos la carpeta o directorio en al que se hará la copia de la partición o disco duro:
AjpdSoft Crear imagen de un disco duro con Clonezilla


Con el texto: "Qué directorio es para la imagen Clonezilla (sólo se muestran los directorios de primer nivel, y la imagen de Clonezilla (por ej. directorio) será excluida. Además, si hay un espacio en el nombre del directorio, no se mostrará".
Clonezilla nos mostrará todos los discos y todas las particiones del equipo, con el espacio total, el usado y el libre. Pulsaremos INTRO para continuar:
AjpdSoft Crear imagen de un disco duro con Clonezilla
A continuación podremos elegir entre modo Beginner (modo principiante, realizará menos preguntas usando opciones por defecto) o modo Expert (modo experto, permite más opciones de configuración). En nuestro caso seleccionaremos "Expert" y pulsaremos INTRO:
AjpdSoft Crear imagen de un disco duro con Clonezilla
Ahora podremos elegir entre las siguientes opciones:
  • savedisk: para guardar un disco duro completo (con todas sus particiones) como imagen.
  • saveparts: para guardar una partición de un disco duro como imagen.
  • restoredisk: para restaurar una imagen previamente realizada de un disco duro o partición a un disco duro del equipo.
  • restoreparts: para restaurar una imagen previamente realizada de una partición a una partición del equipo.
  • recovery-iso-zip: permite crear una recuperación con Clonezilla live.
En nuestro caso seleccionaremos "saveparts" y pulsaremos INTRO:
AjpdSoft Crear imagen de un disco duro con Clonezilla
Introduciremos el nombre para la carpeta donde Clonezilla incluirá todos los ficheros de la imagen, por ejemplo "2011-03-09-01-img", pulsaremos INTRO:
AjpdSoft Crear imagen de un disco duro con Clonezilla
A continuación seleccionaremos la partición para la que queremos realizar la copia de seguridad (imagen), si tenemos varias deberemos marcarla pulsando la barra espaciadora sobre ella (quedará marcada con un asterisco "*"), en nuestro caso: sda1 42.9GB_ntfs.
Este paso es muy importante pues será donde elijamos la partición de la que queremos hacer copia:
AjpdSoft Crear imagen de un disco duro con Clonezilla
Clonezilla nos permite elegir varios programas de clonación:
  • -q2 Prioridad: partclone partimage dd.
  • -q1 Prioridad: sólo dd (soporta todos los sistemas de archivos, pero ineficiente).
  • -q Prioridad: ntfsclone partimage dd
Seleccionaremos la primera opción -q2 Prioridad: partclone partimage dd y pulsaremos INTRO:
AjpdSoft Crear imagen de un disco duro con Clonezilla
Configuraremos los siguientes parámetros para Clonezilla:
  • -c: el cliente espera confirmación antes de la clonación.
  • -j2: clonar los datos ocultos entre el MBR y la 1a partición.
  • -nogui: usar únicamente el modo texto, no TUI/GUI.
  • -a: NO forzar el activar el DMA en el HD.
  • -rm-win-swap-hib: eliminar archivos de página e hibernación en Win si existen.
  • -ntfs-ok: omitir la comprobación de integridad NTFS, incluso sectores erróneo.
  • -rescue: continuar leyendo el siguiente bloque cuando se lea un bloque de disco erróneo.
  • -fsck-src-part: chequear y reparar el sistema de ficheros raíz antes de guardar.
  • -gm: generar checksum MD5 de la imagen.
  • -gs: generar checksum SHA1 de la imagen.
En nuestro caso marcaremos (pulsando con la barra espaciadora) las opciones -c, -j2 y -rescue:
AjpdSoft Crear imagen de un disco duro con Clonezilla
Seleccionaremos el método de compresión, a mayor compresión se requerirá más tiempo aunque el fichero de imagen será de menor tamaño. Las opciones son:
  • -z1: usar compresión gzip (rápida pero imagen pequeña).
  • -z2: usar compresión bzip2 (muy lenta pero imagen pequeña).
  • -z3: usar compresión lzo (rápida, tamaño de la imagen mayor).
  • -z4: compresión lzma (más lenta pero imagen más pequeña).
  • -z5: compresión xz (más lenta pero imagen más pequeña).
  • -z6: compresión lzip (más lenta pero imagen más pequeña).
  • -z0: sin compresión (muy rápida pero imagen muy grande).
Seleccionaremos -z2 (compresión bzip2) y pulsaremos INTRO:
AjpdSoft Crear imagen de un disco duro con Clonezilla


Con el texto: "Elija la opción de compresión. Si no tiene ni idea, deje el valor por defecto. NOTA: -z3 (lzop) es muy rápido al comprimir la imagen cuyo tamaño también es bastante bueno (ligeramente más grande que con gzip). Sin embargo, no es recomendable cuando salve la imagen en un direcotrio de red una máquina con baja cantidad de memoria RAM. Los algoritmos requieren buena calidad de red y memoria RAM. Si la calidad de la red o la RAM no son buenas, la imagen salvada se dañará.
A continuación indicaremos el tamaño (en MB) de los ficheros de imagen, se crearán tantos como sea necesario, cada uno con el tamaño máximo indicado. No es recomendable usar ficheros excesivamente grandes pues pueden provocar problemas en algunos sistemas de archivos y sistemas operativos, tampoco es conveniente seleccionar tamaños muy pequeños porque se generarían infinidad de ficheros. Lo ideal es un tamaño de entre 2GB y 5GB. Introduciremos "3000" y pulsaremos INTRO:
AjpdSoft Crear imagen de un disco duro con Clonezilla


Con el texto: "El tamaño en MB para partir el archivo imagen partición en varios volúmenes de archivos. Por favor introduzca un número mayor de 10. Si no desea partir el archivo imagen, introduzca un número muy grande ej. 100000. Por favor no use nunca más "0" porque si su distribución de GNU Linux usa el nuevo /sbin/init en el inicio, se confundirá con ese "0".
Seleccionaremos la acción a realizar cuando Clonezilla finalice la clonación:
  • -p true: no hacer nada cuando la clonación termine.
  • -p reboot: reiniciar el cliente cuando la clonación termine.
  • -p poweroff: apagar el cliente cuando la clonación termine.
Seleccionaremos la opción que deseemos y pulsaremos INTRO:
AjpdSoft Crear imagen de un disco duro con Clonezilla
Clonezilla nos mostrará el comando Linux que se ejecutará para realizar la copia de seguridad en imagen de la partición seleccionada. Además, podremos hacer futuras clonaciones o generaciones de imágenes ejecutando este comando directamente desde el shell (prompt), el comando:

/opt/drb1/sbin/ocs-sr -q2 -c -j2 -rescue -z2 -i 3000 -p true saveparts 2011-03-09-01-img sda1
La ventaja de poder usar el comando es que la próxima vez sólo tendremos que iniciar con el CD de Clonezilla y seleccionar en esta ventana:
AjpdSoft Crear imagen de un disco duro con Clonezilla
la opción "Enter_shell" (Introduzca línea de comandos del prompt y ejecutar el comando anterior.
Pulsaremos INTRO para continuar:
AjpdSoft Crear imagen de un disco duro con Clonezilla
Por último, para iniciar la copia de la partición seleccionada a imagen pulsaremos "y" e INTRO:
AjpdSoft Crear imagen de un disco duro con Clonezilla
Se iniciará el proceso de copia de la partición a imagen, nos indicará el progreso y el tiempo estimado en concluir el proceso:
AjpdSoft Crear imagen de un disco duro con Clonezilla
Una vez concluido el proceso nos mostrará el mensaje "Total Time: xxx, 100.00% completed". Clonezilla realizará la acción elegida en pasos anteriores tras concluir con el proceso. En nuestro caso, puesto que hemos seleccionado no hacer nada, pulsaremos INTRO para continuar:
AjpdSoft Crear imagen de un disco duro con Clonezilla
Clonezilla nos dará las siguientes posibilidades:
  • (0) Poweroff: apagar el equipo.
  • (1) Reboot: reiniciar el equipo.
  • (2) Enter command line prompt: iniciar la consola o shell de comandos Linux.
  • (3) Start over: volver a iniciar Clonezilla.
Seleccionaremos 1 y pulsaremos INTRO, retiraremos el CD de Clonezilla y el equipo se reiniciará con el sistema operativo de forma normal:
AjpdSoft Crear imagen de un disco duro con Clonezilla
Si queremos comprobar los ficheros generados tras la clonación a imagen accederemos a la partición destino elegida en el proceso:
AjpdSoft Crear imagen de un disco duro con Clonezilla
Con estos ficheros podremos recuperar la imagen a una partición o disco duro en cualquier momento, siempre teniendo en cuenta que se destruirán todos los datos de la partición destino.

Artículos relacionados


Créditos

Artículo realizado íntegramente por Alonsojpd miembro fundador del proyecto AjpdSoft.

3/07/2011


Explicamos paso a paso cómo instalar impresoras en un servidor con Microsoft Windows Server 2003 (válido para Microsoft Windows Server 2008) promocionado a controlador de dominio (con Active Directory), tanto impresoras de red como impresoras conectadas al equipo. Mostramos cómo configurar las impresoras locales del servidor para guardar un log de uso en el visor de sucesos, de forma que con alguna aplicación de terceros podremos obtener el número de copias imprimidas por cada usuario.


 

Instalar impresora en Active Directory de dominio de Microsoft Windows

La instalación de impresoras en un servidor con Microsoft Windows Server 2003 (válido para Microsoft Windows Server 2008) se realiza de forma similar a un equipo normal. A continuación explicamos cómo instalar una impresora conectada al puerto USB o paralelo del servidor y cómo instalar una impresora de red en el servidor. También explicaremos cómo instalar una impresora de otro equipo en el directorio activo (Active Directory).

Instalar una impresora conectada al servidor o bien de red en Windows Server 2003

Instalar impresora conectada al puerto USB o puerto paralelo

En el caso de impresoras conectadas al equipo por USB o puerto paralelo, es recomendable descargar los drivers (controladores) del modelo de la impresora apropiados para Microsoft Windows Server 2003 ó Microsoft Windows Server 2008. Es muy recomendable no usar el programa de instalación pues puede instalar herramientas y utilidades innecesarias para un servidor, es conveniente descargar sólo el driver (controlador) e instalar únicamente éste.
Vamos a explicar cómo instalar, de forma manual (sin usar el software de instalación), la impresora HP Officejet 5610. En primer lugar accederemos a la web oficial de la impresora y descargaremos los drivers o controladores para Windows Server 2000/2003/2008:
AjpdSoft Instalar impresora conectada al puerto USB o puerto 
paralelo
Descomprimiremos el fichero descargado (a veces es un ejecutable autodescomprimible). Accederemos a la carpeta descomprimida. En el caso de los drivers de la HP Officejet 5610 la descompresión la realiza en la carpeta temporal del usuario:
AjpdSoft Instalar impresora conectada al puerto USB o puerto 
paralelo
Accederemos a "Impresoras y faxes", desde el menú "Inicio" - "Panel de control" - "Impresoras y faxes", haremos doble clic en "Agregar impresora":
AjpdSoft Instalar impresora conectada al puerto USB o puerto 
paralelo
Se iniciará el asistente de instalación de nueva impresora, pulsaremos "Siguiente":
AjpdSoft Instalar impresora conectada al puerto USB o puerto 
paralelo
Marcaremos la opción "Impresora local conectada a este equipo", desmarcaremos el check "Detectar e instalar mi impresora Plug and Play automáticamente":
AjpdSoft Instalar impresora conectada al puerto USB o puerto 
paralelo
Marcaremos "Usar el puerto siguiente", seleccionaremos el puerto de la impresora, en nuestro caso "USB001":
AjpdSoft Instalar impresora conectada al puerto USB o puerto 
paralelo
En la ventana de selección del fabricante y modelo de impresora, pulsaremos "Utilizar disco":
AjpdSoft Instalar impresora conectada al puerto USB o puerto 
paralelo
Seleccionaremos la carpeta donde hayamos descomprimido los drivers o controladores:
AjpdSoft Instalar impresora conectada al puerto USB o puerto 
paralelo
Si todo es correcto en "Impresoras" aparecerá la nuestra, pulsaremos "Siguiente":
AjpdSoft Instalar impresora conectada al puerto USB o puerto 
paralelo
Si queremos establecer esta impresora como predeterminada (será la que se use por defecto) marcaremos el check "Sí" en "¿Desea usar esta impresora como predeterminada?":
AjpdSoft Instalar impresora conectada al puerto USB o puerto 
paralelo
Si queremos compartir esta impresora para que pueda ser instalada en otros equipo de nuestra red LAN marcaremos la sengunda opción y en "Nombre del recurso compartido" introduciremos un nombre que identificará la impresora en nuestro equipo y en los equipos que quieran acceder a ella. Pulsaremos "Siguiente" para continuar:
AjpdSoft Instalar impresora conectada al puerto USB o puerto 
paralelo
En la siguiente ventana podremos añadir algunos datos adicionales a la impresora, datos que aparecerán en el recurso compartido si algún usuario instala dicha impresora (ubicación y comentarios):
AjpdSoft Instalar impresora conectada al puerto USB o puerto 
paralelo
Si queremos imprimir una página de prueba marcaremos el check "Sí", pulsaremos "Siguiente" para finalizar la instalación:
AjpdSoft Instalar impresora conectada al puerto USB o puerto 
paralelo
Nota: el proceso de instalación puede variar en función del modelo y tipo de conexión de la impresora.

Instalar impresora de red en un equipo servidor con Microsoft Windows Server 2003 ó 2008

A continuación mostramos un artículo donde explicamos paso a paso cómo instalar una impresora de red (con IP propia) en un equipo Windows:


Añadir impresora de otro equipo al dominio Microsoft Windows Active Directory

Microsoft Windows Server 2003 permite añadir impresoras al directorio activo (Active Directory) siempre que haya un dominio y algún controlador promocionado. Permite añadir impresoras como un objeto más de Active Directory.
Para poder añadir una impresora al Active Directory, en primer lugar dicha impresora debe estar compartida en el equipo que la tiene instalada físicamente. Para compartirla, en un equipo con Microsoft Windows 7 pulsaremos en el botón "Iniciar", seleccionaremos "Dispositivos e impresoras":
AjpdSoft Instalar impresora en Active Directory de dominio de 
Microsoft Windows
Seleccionaremos la impresora a compartir, pulsaremos con el botón derecho sobre ella y seleccionaremos "Propiedades de impresora":
AjpdSoft Instalar impresora en Active Directory de dominio de 
Microsoft Windows
En la pestaña o solapa "Compartir" marcaremos la opción "Compartir esta impresora", en "Recurso compartido" indicaremos el nombre de la impresora, dicho nombre será el que se muestre cuando cualquier otro equipo de la red LAN intente instalarla:
AjpdSoft Instalar impresora en Active Directory de dominio de 
Microsoft Windows
Deberemos saber la IP o el nombre de red (hostname) del equipo que tiene la impresora, para ello pulsaremos las teclas Windows + R (o bien desde el botón "Iniciar" buscaremos "Ejecutar"):
AjpdSoft Instalar impresora en Active Directory de dominio de 
Microsoft Windows
En "Abrir" introduciremos "cmd" y pulsaremos "Aceptar":
AjpdSoft Instalar impresora en Active Directory de dominio de 
Microsoft Windows
En la ventana de MS-DOS introduciremos el comando "hostname" y pulsaremos INTRO:
AjpdSoft Instalar impresora en Active Directory de dominio de 
Microsoft Windows
Nos devolverá el nombre del equipo en la red, en nuestro caso "pcalonso". Anotaremos dicho nombre que necesitaremos posteriormente para instalar la impresora en el servidor Microsoft Windows Server 2003.
A continuación, una vez compartida la impresora, accederemos al servidor Microsoft Windows Server 2003, abriremos "Usuarios y equipos de Active Directory" desde el botón "Inicio" - "Todos los programas" - "Herramientas administrativas" - "Usuarios y equipos de Active Directory". Accederemos a la unidad organizativa donde queramos instalar la impresora, pulsaremos con el botón derecho y seleccionaremos "Nuevo" - "Impresora":
AjpdSoft Instalar impresora en Active Directory de dominio de 
Microsoft Windows
En "Ruta de acceso de red del recurso compartido de impresión anterior a Windows 2000 introduciremos la ruta UNC (convención de nomenclatura universal o Universal Naming Convention) con el formato:

nombre_redrecurso_compartido
En nuestro caso:

pcalonsoIMP001
AjpdSoft Instalar impresora en Active Directory de dominio de 
Microsoft Windows
Para finalizar la instalación de la impresora pulsaremos con el botón derecho sobre ella en Usuarios y equipos de Active Directory y seleccionaremos "Conectar":
AjpdSoft Instalar impresora en Active Directory de dominio de 
Microsoft Windows
Se falta el controlador (driver) de la impresora, nos mostrará un mensaje indicando que debe ser instalado, pulsaremos "Aceptar":
AjpdSoft Instalar impresora en Active Directory de dominio de 
Microsoft Windows


Con el texto: "El servidor de la impresora "HP Officejet 5600 series" no tiene el controlador de impresora correcto instalado. Si desea buscarlo, haga clic en Aceptar. De lo contrario, haga clic en Cancelar y póngase en contacto con el administrador de red o con el fabricante del equipo para obtener el controlador de impresión adecuado".

Si no tenemos el controlador instalado, es posible que haya que seguir los pasos que indicamos aquí.
Si queremos ver o modificar las propiedades de la impresora pulsaremos con el botón derecho sobre ella y seleccionaremos "Propiedades":
AjpdSoft Instalar impresora en Active Directory de dominio de 
Microsoft Windows
Podremos añadir más datos a la impresora, como "Ubicación", "Modelo", "Descripción", etc.:
AjpdSoft Instalar impresora en Active Directory de dominio de 
Microsoft Windows


Auditar el uso de la impresora, número de copias imprimidas por usuario

Microsoft Windows Server 2003 y Microsoft Windows Server 2008 permiten auditar el uso de las impresoras por parte de los usuarios, de forma que podremos saber cuántas copias imprime en cada impresora cada usuario. En principio Microsoft Windows Server 2003 almacena esta información en el visor de sucesos por lo que podrá ser consultada directamente, pero no podremos obtener informes avanzados para ello habrá que usar aplicaciones de terceros.
La opción de auditoría de impresión sólo podrá activarse en impresoras instaladas en el servidor bien de red o bien en puerto paralelo o USB. Para activar la auditoría de impresoras en el servidor seguiremos los siguientes pasos:
1. Abriremos la carpeta de Impresoras y faxes, pulsaremos en el menú "Archivo" - "Propiedades del servidor":
AjpdSoft Auditar el uso de la impresora, número de copias 
imprimidas por usuario
En la pestaña "Opciones avanzadas" deberemos marcar la opción "Activar el registro de sucesos de información de la cola de impresión":
AjpdSoft Auditar el uso de la impresora, número de copias 
imprimidas por usuario
2. Además de la opción anterior, conviene comprobar que está activada la directiva del controlador de dominio "Auditar el acceso del servicio de directorio" esté habilitada. Para ello accedremos al menú "Herramientas administrativas" - "Directiva de seguridad del controlador de dominio":
AjpdSoft Auditar el uso de la impresora, número de copias 
imprimidas por usuario
En "Configuracion de seguridad" - "Directivas locales" - "Directiva de auditoría" pulsaremos con el botó nderecho sobre "Auditar el acceso del servicio de directorio" y seleccionaremos "Propiedades":
AjpdSoft Auditar el uso de la impresora, número de copias 
imprimidas por usuario
Marcaremos la opción "Definir esta configuración de directiva" y podremos marcar "Correcto" para auditar los sucesos con estado de finalización correcto y "Error" para auditar los sucesos de finalización con error:
AjpdSoft Auditar el uso de la impresora, número de copias 
imprimidas por usuario

El texto de esta directiva:

Auditar el acceso del servicio de directorio
Esta configuración de seguridad determina si debe auditarse el evento de un usuario que obtiene acceso a un objeto de Active Directory con su propia lista de control de acceso del sistema (SACL) especificada.
De manera predeterminada, este valor se establece en Sin auditoría en el objeto de directiva de grupo (GPO) de controlador de dominio predeterminado y permanece sin definir en estaciones de trabajo y servidores donde no tiene ningún significado.
Si define esta configuración de directiva, puede especificar si auditar los aciertos, los errores o no auditar ningún tipo de evento. Las auditorías de aciertos generan una entrada de auditoría cuando el usuario obtiene acceso correctamente a un objeto de Active Directory con una SACL especificada. Las auditorías de errores generan una entrada de auditoría cuando un usuario intenta obtener acceso a un objeto de Active Directory con una SACL especificada y no lo consigue. Para establecer este valor en Sin auditoría, en el cuadro de diálogo Propiedades de esta configuración de directiva, active la casilla Definir esta configuración de directiva y desactive las casillas Correcto y Erróneo.
Tenga en cuenta que puede establecer una SACL en un objeto de Active Directory mediante la ficha Seguridad del cuadro de diálogo Propiedades del objeto. Es igual que Auditar el acceso a objetos, excepto en que sólo se aplica a objetos de Active Directory y no del sistema de archivos o del Registro.
Valor predeterminado:
Correcto en controladores de dominio.
Sin definir para un equipo miembro.

3. A continuación, en la carpeta de Impresoras y faxes pulsaremos con el botón derecho del ratón sobre la impresora a auditar, seleccionaremos "Propiedades":
AjpdSoft Auditar el uso de la impresora, número de copias 
imprimidas por usuario
En la pestaña "Seguridad" pulsaremos en el botón "Opciones avanzadas":
AjpdSoft Auditar el uso de la impresora, número de copias 
imprimidas por usuario
En la pestaña "Auditoría" pulsaremos en "Agregar":
AjpdSoft Auditar el uso de la impresora, número de copias 
imprimidas por usuario
Añadiremos los usuarios a los que se les aplicará la auditoría. En nuestro caso introduciremos "Todos" para auditar el uso de la impresora para todos los usuarios:
AjpdSoft Auditar el uso de la impresora, número de copias 
imprimidas por usuario
A continuación indicaremos el suceso a auditar y dónde se aplicará ("Esta impresora y documentos", "Sólo esta impresora" ó "Sólo documentos"). Podremos auditar los siguientes sucesos: imprimir, administrar impresoras, administrar documentos, permisos de lectura, cambiar permisos y tomar posesión:
AjpdSoft Auditar el uso de la impresora, número de copias 
imprimidas por usuario

Consultar el visor de sucesos para analizar el uso de las impresoras en Windows Server 2003

Con los pasos anteriores a paritr de ahora, cada vez que un usuario use alguna de las impresoras auditadas, Microsoft Windows Server 2003 escribirá un suceso en el visor de sucesos con la información de documento imprimido, número de páginas y usuario.
Para consultar el visor de sucesos accederemos a "Inicio" - "Herramientas administrativas" - "Visor de sucesos":
AjpdSoft Consultar el visor de sucesos para analizar el uso de las 
impresoras en Windows Server 2003
En el registro de Sistema podremos ver, con el origen "Print" todos aquellos sucesos en los que se produzca un uso de la impresora por parte de los usuarios, haciendo doble clic podremos ver los detalles del suceso: fecha, hora, usuairo, nombre del documento imprimido, impresora usada, puerto usado, tamaño en bytes del documento y número de páginas impresas:
AjpdSoft Consultar el visor de sucesos para analizar el uso de las 
impresoras en Windows Server 2003
Si queremos informes más avanzados con totales de páginas impresas por usuario o por impresora deberemos usar software de terceros o bien desarrollar uno propio. 

Artículos relacionados

 

Créditos

Artículo realizado íntegramente por Alonsojpd miembro fundador del proyecto AjpdSoft.

3/06/2011


Explicamos cómo crear triggers o disparadores en MySQL Server 5.1. Mostramos qué es un trigger y cómo usarlo en MySQL. Como ejemplo creamos un trigger para simular un deshacer de una tabla, un trigger que guarda de forma automática los valores de los campos anteriores y los nuevos valores en caso de modificación de un registro. Cómo crear, eliminar y mostrar triggers en MySQL.



Trigger (disparador)

Un trigger o disparador en una Base de datos , es un procedimiento que se ejecuta cuando se cumple una condición establecida al realizar una operación. Dependiendo de la base de datos, los triggers pueden ser de inserción (INSERT), actualización (UPDATE) o borrado (DELETE). Algunas bases de datos pueden ejecutar triggers al crear, borrar o editar usuarios, tablas, bases de datos u otros objetos.
Los triggers son usados para mejorar la administración de la Base de datos, sin necesidad de contar con que el usuario ejecute sentencias de SQL determinadas para tal efecto. Además, pueden generar valores de columnas, pueden prevenir errores de datos, sincronizar tablas, modificar valores de una vista, auditorías de seguridad, etc.
La estructura básica de un trigger es:
  • Llamada de activación: es la sentencia que permite "disparar" el código a ejecutar.
  • Restricción: es la condición necesaria para realizar el código. Esta restricción puede ser de tipo condicional o de tipo nulidad.
  • Acción a ejecutar: es la secuencia de instrucciones a ejecutar una vez que se han cumplido las condiciones iniciales.
Existen dos tipos de disparadores que se clasifican según la cantidad de ejecuciones a realizar:
  • Row Triggers (o disparadores de fila): son aquellos que se ejecutaran n-veces si se llaman n-veces desde la tabla asociada al trigger.
  • Statement Triggers (o disparadores de secuencia): son áquellos que sin importar la cantidad de veces que se cumpla con la condición, su ejecución es única.

Cómo crear un trigger en MySQL Server 5.1

Para crear un trigger o disparador en MySQL Server deberemos usar alguna aplicación que permita ejecutar sentencias SQL, por ejemplo MySQL Administrator con MySQL Query Browser:
AjpdSoft Cómo crear un trigger en MySQL Server 5.1
O desde una terminal (MS-DOS de Windows o Linux) ejecutando el comando "mysql":

mysql --user=nombre_usuario --pasword=contraseña_usuario base_datos
AjpdSoft Cómo crear un trigger en MySQL Server 5.1
O bien usando alguna otra aplicación de terceros, como nuestra aplicación gratuita y 100% open source AjpdSoft Administración Bases de Datos:
AjpdSoft Cómo crear un trigger en MySQL Server 5.1
En cuanto dispongamos de la aplicación para ejecutar sentencias SQL y un usuario de MySQL Server con permisos suficientes para crear triggers o disparadores en la base de datos donde queramos, a continuación deberemos analizar para qué vamos a usar el trigger, dependiendo de la tarea a realizar necesitaremos, por ejemplo, una tabla auxiliar. En el ejemplo que vamos a usar queremos que mediante un disparador o trigger de MySQL Server se añada un registro a una tabla auxiliar cada vez que un usuario realice una inserción en una de las tablas de MySQL Server. Para ello crearemos la tabla destino del trigger con la sentencia SQL:

CREATE TABLE log_accesos
(
  codigo int(11) NOT NULL AUTO_INCREMENT,
  usuario varchar(100),
  fecha datetime,
  PRIMARY KEY (`codigo`)
)
ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=latin1
AjpdSoft Cómo crear un trigger en MySQL Server 5.1
En la tabla auxiliar de auditoría anterior queremos almacenar el nombre del usuario de MySQL Server y la fecha y hora en la que se haya realizado una inserción en una tabla de una base de datos de nuestro servidor MySQL Server. En el ejemplo auditaremos la inserción de registros en la tabla "factura".
A continuación crearemos el trigger o disparador correspondiente con la sentencia SQL:



delimiter $$
CREATE TRIGGER ajsoluciones.tg_auditoria_accesos
BEFORE INSERT ON ajsoluciones.factura
FOR EACH ROW
BEGIN
  INSERT INTO ajsoluciones.log_accesos (usuario, fecha)
      values (CURRENT_USER(), NOW());
END$$
delimiter ;
Introduciremos la sentencia SQL anterior en MySQL Query Browser o en AjpdSoft Administración Bases de Datos (sin "delimiter $$" ni "delimiter ;") pulsaremos Control + Intro para ejecutar la consulta SQL y, si todo es correcto (tenemos permisos, existe la tabla "factura", existe la tabla "log_accesos" y existe el catálogo o base de datos "ajsoluciones") el trigger quedará almacenado y funcionando:
AjpdSoft Cómo crear un trigger en MySQL Server 5.1
En el ejemplo anterior, el trigger se creará en la base de datos "ajsoluciones", con el nombre "tg_auditoria_accesos" para la tabla "factura" y, a partir de ahora, cuando un usuario cree un registro en la tabla "factura" se creará otro de forma automática en la tabla auxiliar "log_accesos" con el nombre del usuario de MySQL Server que ha creado el registro y con la fecha y hora en que realizó la inserción.
Para obtener el usuario actual de MySQL Server hemos usado la función CURRENT_USER() y para obtener la fecha y la hora actuales hemos usado la función NOW().

La sintaxis para crear un trigger en MySQL Server:

CREATE
    [DEFINER = { user | CURRENT_USER }]
    TRIGGER trigger_name trigger_time trigger_event
    ON tbl_name FOR EACH ROW trigger_body
 

Otras acciones o tareas a realizar con los triggers o disparadores de MySQL

  • Para consultar los triggers o disparadores creados en una base de datos ejecutaremos el comando SQL:
    show create triggers;

Nos mostrará un registro por cada trigger creado con los campos: trigger, event, table, statement, timing, created, sql_mode, definer, character_set_client, collation_connection, database_collation. Las importantes son:

  • Trigger: almacena el nombre del disparador.
  • Event: indica el tipo de trigger (insert, update, delete).
  • Table: tabla de la base de datos a la que se asocia el trigger.
  • Statement: código SQL del trigger.
  • Timing: tiempo en que se ejecutará el trigger: before (antes), after (después).
AjpdSoft Otras acciones o tareas a realizar con los triggers o 
disparadores de MySQL
  • Para eliminar un trigger o disparador existente ejecutaremos la siguiente consulta:
    drop trigger nombre_trigger;
  • Para mostrar la consulta SQL completa de creación de un trigger ejecutaremos el comando:
    show create trigger nombre_trigger;
  • Almacenamiento de los trigger en MySQL: los triggers o disparadores se almacenan en la tabla TRIGGERS del catálogo del sistema information_schema, para verlos:
    select * from information_schema.triggers;

AjpdSoft Otras acciones o tareas a realizar con los triggers o 
disparadores de MySQL

 

Crear trigger para auditoría de modificaciones en una tabla de una base de datos MySQL

Crear disparador en tabla MySQL para logear todos los cambios de una tabla

Vamos a explicar cómo crear un trigger en MySQL Server que permita guardar en una tabla auxiliar todas las modificaciones que se vayan realizando en todos los campos de una tabla de la base de datos del servidor MySQL Server. Con este trigger podremos saber qué modificaciones se han realizado, con qué usuario de MySQL Server, en qué fecha y hora y qué valores había antes de la modificación y después de la modificación.
Con este ejemplo podremos implementar de forma automática el control de cambios de una tabla, por si, en algún momento necesitamos implementar un deshacer o bien por si queremos recuperar la tabla a un punto anterior en el tiempo.
Realizaremos este trigger para una tabla de ejemplo llamada "factura" con la siguiente estructura:

CREATE TABLE factura (
  codigo int(10) unsigned NOT NULL AUTO_INCREMENT,
  numero varchar(15) DEFAULT NULL,
  importetotal float(19,4) DEFAULT NULL,
  baseimponible float(19,4) DEFAULT NULL,
  porcentajeiva float(19,4) DEFAULT NULL,
  importeiva float(19,4) DEFAULT NULL,
  porcentajedescuento float(19,4) DEFAULT NULL,
  importedescuento float(19,4) DEFAULT NULL,
  codigocliente int(10) unsigned NOT NULL DEFAULT '0',
  fecha datetime DEFAULT '0000-00-00 00:00:00',
  cobrado char(1) DEFAULT NULL,
  observacion varchar(255) DEFAULT NULL,
  importecobrado float(19,4) DEFAULT NULL,
  codusuarioa int(10) unsigned DEFAULT NULL,
  codusuariom int(10) unsigned DEFAULT NULL,
  fechaa datetime DEFAULT NULL,
  fecham datetime DEFAULT NULL,
  contabiliza char(1) DEFAULT NULL,
  imprimida char(1) DEFAULT NULL,
  enviada char(1) DEFAULT NULL,
  fechaenvio datetime DEFAULT NULL,
  piefactura text,
  fechavencimiento datetime DEFAULT NULL,
  serie char(2) NOT NULL DEFAULT '',
  PRIMARY KEY (codigo),
  UNIQUE KEY Indice_Numero_Factura (numero) USING HASH
)
Crearemos la tabla auxiliar "factura" con los mismos campos para guardar el valor anterior (añadiremos el sufijo "_old") y duplicaremos los campos para guardar el nuevo valor (añadiremos el sufijo "_new"):

CREATE TABLE auditoria_factura (
  codigo int(10) unsigned NOT NULL AUTO_INCREMENT,
  usuario varchar(100) NOT NULL,
  fecha datetime NOT NULL,
  numero_old varchar(15),
  importetotal_old float(19,4),
  baseimponible_old float(19,4),
  porcentajeiva_old float(19,4),
  importeiva_old float(19,4),
  porcentajedescuento_old float(19,4),
  importedescuento_old float(19,4),
  codigocliente_old int(10) unsigned,
  fecha_old datetime,
  cobrado_old char(1),
  observacion_old varchar(255),
  importecobrado_old float(19,4),
  codusuarioa_old int(10),
  codusuariom_old int(10),
  fechaa_old datetime,
  fecham_old datetime,
  contabiliza_old char(1),
  imprimida_old char(1),
  enviada_old char(1),
  fechaenvio_old datetime,
  piefactura_old text,
  fechavencimiento_old datetime,
  serie_old char(2) NOT NULL,
  numero_new varchar(15),
  importetotal_new float(19,4),
  baseimponible_new float(19,4),
  porcentajeiva_new float(19,4),
  importeiva_new float(19,4),
  porcentajedescuento_new float(19,4),
  importedescuento_new float(19,4),
  codigocliente_new int(10) unsigned,
  fecha_new datetime,
  cobrado_new char(1),
  observacion_new varchar(255),
  importecobrado_new float(19,4),
  codusuarioa_new int(10) unsigned,
  codusuariom_new int(10) unsigned,
  fechaa_new datetime,
  fecham_new datetime,
  contabiliza_new char(1),
  imprimida_new char(1),
  enviada_new char(1),
  fechaenvio_new datetime,
  piefactura_new text,
  fechavencimiento_new datetime,
  serie_new char(2),
  PRIMARY KEY (codigo)
)
A continuación crearemos el trigger o disparador con el código SQL:
AjpdSoft Crear trigger para auditoría de modificaciones en una 
tabla de una base de datos MySQL
El código del disparador o trigger completo:

DELIMITER $$

CREATE TRIGGER ajsoluciones.tg_auditoria_factura
   AFTER UPDATE ON ajsoluciones.factura
   FOR EACH ROW
BEGIN
   INSERT INTO ajsoluciones.auditoria_factura
     (usuario, fecha, numero_old, importetotal_old,
     baseimponible_old, porcentajeiva_old, importeiva_old,
     porcentajedescuento_old, importedescuento_old,
     codigocliente_old, fecha_old, cobrado_old,
     observacion_old, importecobrado_old, codusuarioa_old,
     codusuariom_old, fechaa_old, fecham_old, contabiliza_old,
     imprimida_old, enviada_old, fechaenvio_old,
     piefactura_old, fechavencimiento_old, serie_old,
     numero_new, importetotal_new, baseimponible_new,
     porcentajeiva_new, importedescuento_new, importeiva_new,
     porcentajedescuento_new, codigocliente_new,
     fecha_new, cobrado_new, observacion_new,
     importecobrado_new, codusuarioa_new, codusuariom_new,
     fechaa_new, fecham_new, contabiliza_new, imprimida_new,
     enviada_new, fechaenvio_new, piefactura_new,
     fechavencimiento_new, serie_new)
     VALUES (CURRENT_USER(), NOW(), OLD.numero, OLD.importetotal,
     OLD.baseimponible, OLD.porcentajeiva, OLD.importeiva,
     OLD.porcentajedescuento, OLD.importedescuento,
     OLD.codigocliente, OLD.fecha, OLD.cobrado,
     OLD.observacion, OLD.importecobrado, OLD.codusuarioa,
     OLD.codusuariom, OLD.fechaa, OLD.fecham, OLD.contabiliza,
     OLD.imprimida, OLD.enviada, OLD.fechaenvio,
     OLD.piefactura, OLD.fechavencimiento, OLD.serie,
     NEW.numero, NEW.importetotal, NEW.baseimponible,
     NEW.porcentajeiva, NEW.importedescuento, NEW.importeiva,
     NEW.porcentajedescuento, NEW.codigocliente,
     NEW.fecha, NEW.cobrado, NEW.observacion,
     NEW.importecobrado, NEW.codusuarioa, NEW.codusuariom,
     NEW.fechaa, NEW.fecham, NEW.contabiliza, NEW.imprimida,
     NEW.enviada, NEW.fechaenvio, NEW.piefactura,
     NEW.fechavencimiento, NEW.serie);
END;
$$

DELIMITER ;
Vamos a explicar un poco el trigger anterior:
  1. Por un lado usamos AFTER UPDATE para indicar que el trigger se ejecute cada vez que un usuario realice alguna modificación en la tabla factura del catálogo o base de datos ajsoluciones.
  2. El trigger insertará un registro en la tabla auxiliar ajsoluciones.auditoria_factura, en dicho registro, el trigger guardará para cada campo el valor anterior y el nuevo valor (si ha habido modificación). Para ello se usan las cláusulas especiales "OLD.nombre_campo" (el trigger obtendrá el valor anterior al cambio del campo) y "NEW.nombre_campo" (el trigger obtendrá el nuevo valor del campo).
  3. La función de MySQL CURRENT_USER() obtendrá y almacenará en la tabla el usuario actual de MySQL.
  4. La función NOW() obtendrá la fecha y hora en que el usuario realiza el cambio en la tabla.

 

Ejemplo del funcionamiento del trigger en MySQL desde una aplicación Delphi

Si uno de los usuarios de la aplicación abre la ventana de facturas:
AjpdSoft Crear trigger para auditoría de modificaciones en una 
tabla de una base de datos MySQL
Cuando el usuario realice un cambio en cualquier campo de la tabla facturas, por ejemplo, si añade a "Observación" el texto "Prueba trigger AjpdSoft" y guarda los cambios:
AjpdSoft Crear trigger para auditoría de modificaciones en una 
tabla de una base de datos MySQL
El trigger o disparador establecido para esta tabla habrá creado un registro en la tabla auditoria_factura con el valor anterior en el campo "observacion_old" y el valor nuevo en el campo "observacion_new". Para ver esta tabla ejecutaremos la consulta SQL:

select fecha, usuario, observacion_old, observacion_new
from ajsoluciones.auditoria_factura
AjpdSoft Crear trigger para auditoría de modificaciones en una 
tabla de una base de datos MySQL
El trigger almacenará la fecha, la hora, el usuario de MySQL, el valor de los campos anteriores y el valor de los campos modificado.
Con este ejemplo hemos implementado una opción muy interesante para logear o auditar todos los cambios que se produzcan en una tabla MySQL. Por supuesto no se debe abusar de este tipo de trigger pues podría generar tablas con millones de registros y ralentizar la base de datos. Es recomendable usar este tipo de trigger sólo en el caso de tablas importantes para las que se quiera auditar todos los cambios, vigilando siempre el crecimiento de las tablas auxiliares.

Otras opciones y funcionalidades de los trigger en MySQL

  • Seguridad: si queremos que un usuario, además del superusuario "root" tenga permisos para crear triggers o disparadores en una tabla, ejecutaremos el comando SQL:
    GRANT CREATE TRIGGER ON nombre_tabla TO nombre_usuario
  • Seguridad: para dar permisos de creación de triggers para un usuario para todas las tablas ejecutaremos el comando SQL:

  • GRANT CREATE TRIGGER ON *.* TO nombre_usuario
  • Un ejemplo de un disparador o trigger para calcular el importe de comisión de una venta realizada: si tenemos una tabla donde guardamos las ventas realizadas por cada comercial, con la siguiente estructura:


CREATE TABLE bdajpdsoft.ventas (
  codigo INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  codigocliente INTEGER UNSIGNED NOT NULL,
  codigocomercial INTEGER UNSIGNED NOT NULL,
  importeventa DECIMAL(9,2),
  importecomision DECIMAL(9,2),
  PRIMARY KEY (`codigo`)
) ENGINE = InnoDB;

Podremos realizar un trigger que, de forma automática, calcule la comisión que corresponde a cada venta, dicha comisión se guardará en el campo "importecomision" y se calculará mediante el siguiente procedimiento almacenado:


DELIMITER $$
CREATE PROCEDURE pr_calculo_comision (importe DECIMAL(9,2))
BEGIN
  SET @var_global_comision := valor / 5;
END;
$$
DELIMITER ;
 
AjpdSoft Otras opciones y funcionalidades de los trigger en MySQL

El trigger para actualizar el valor del campo "importecomision" de forma automática será:


DELIMITER $$
CREATE TRIGGER ajsoluciones.tg_actualizar_comision
BEFORE INSERT ON ajsoluciones.ventas
FOR EACH ROW
BEGIN
  CALL ajsoluciones.pr_calculo_comision(NEW.importeventa);
  SET NEW.importecomision = @var_global_comision;
END;
$$
DELIMITER ;
 

 


Artículos relacionados

 

Créditos

Artículo realizado íntegramente por Alonsojpd miembro fundador del proyecto AjpdSoft.