Windows

Desinstalar manualmente impresora Windows 7

2

En ocasiones una impresora genera conflicto y no se deja ni siquiera desinstalar. En ocasiones hasta tumba el servicio de impresión.

En estos casos lo mejor es desinstalarla de forma manual y volver a instalar driver e impresora.

Es importante tener la impresora apagada y desconectada.

Para desinstalar una impresora de forma manual en Windows 7 ejecuta Regedit y accede a la siguiente rama:

HKLM/SYSTEM/CurrentControlSet/Control/Print/Printers

Ahí encontraremos claves con los parámetros de nuestras impresoras. Elimina la impresora que te da problemas. Con esto es sistema ya no la detectará y la puedes volver a instalar si quieres.

Migración de Plesk para Windows a Plesk para Linux

0

En las últimas versiones de Plesk, Parallels ha incluido una herramienta estupenda que permite realizar migraciones entre servidores Linux, o servidores Windows, e incluso de un servidor Linux a un servidor Windows, utilizando internamente ssh y rsync para realizar el transporte de datos, pero no da la posibilidad de realizar una migración automatizada de Windows a Linux, así que para este caso no ha quedado más remedio que recurrir a procedimientos más artesanales.

El plan consiste básicamente en realizar consultas SQL a la base de datos de Plesk para Windows, a partir de las cuáles se pueda obtener una serie de scripts que utilicen los comandos CLI provistos por Plesk. Una vez replicada la estructura de clientes y dominios, ya se comienza a pasar los datos, vía FTP, del código de las webs, y mediante exports de MySQL para las bases de datos. Para el correo se creó una utilidad en Python que analizaba el fichero AUTH.TAB de MailEnable, generando un script que crea los buzones en Plesk, y después invoca a imapsync para copiar el contenido de los mismos.
(más…)

Sincronización NTP de servidores Windows

4

Para sincronizar cualquier equipo con sistema operativo Windows de escritorio (XP ó 7, principalmente), es tan simple como hacer doble click en la hora de la barra de tareas, ir a la pestaña Hora de Internet, y allí hacer los cambios que se desee. Sin embargo, esta pestaña no está disponible en los sistemas operativos para servidores (comprobado en 2003 y 2008 R2), así que tenemos que recurrir al símbolo de sistema para lograrlo:

El servidor elegido se puede cambiar en el parámetro, por supuesto, pero así de paso veis cuál es el NTP que lleva la hora oficial en España, del Real Instituto y Observatorio de la Armada.

Configuración NTP Windows

Para no tener que teclear tanto, esta es la secuencia de comandos:

net stop w32time
net start w32time
w32tm /config /manualpeerlist:hora.roa.es,0x1 /syncfromflags:MANUAL
w32tm /config /update
w32tm /resync

Renombrar archivos masivamente

1

De vez en cuando suele surgir la problemática: en una colección de fotos, con documentos almacenados en la empresa, los trabajos de la carrera… Necesitamos ir organizándolos, y es posible que los tengamos ya organizados, pero en un momento dado preferimos cambiar algo de la organización. Ahí es donde podemos echar mano de Rename Expert, la mejor aplicación con que me he cruzado para este fin.

Se puede realizar un filtrado por multitud de conceptos, tanto sobre el nombre y ruta del fichero como sobre el contenido. Por nombrar algunos:

  • Longitud del nombre del fichero.
  • Ancho de la imagen contenida.
  • Datos de la cámara con que se realiza la fotografía.
  • Título de la canción según ID3.
  • Autor del texto del PDF.

Después, para los ficheros que cumplan el filtro se pueden definir acciones que no se limitan a jugar con el nombre, como pueden ser:

  • Mover el fichero.
  • Recuperar el nombre de una lista CSV.
  • Encriptación de los nombres de archivo por contraseña.

En definitiva, tras probar unos cuantos, el mejor que he encontrado. Eso sí, sólo Windows.

Espera, ¿que no quieres pagar por el renombrador? Pues nada, hay una alternativa, pero no es tan estética e intuitiva: Bulk Rename Utility.

No me ha hecho falta, así que no he buscado mucho, pero creo que tampoco puede lidiar con MP3, JPG y PDF. Lo que sí hace perfectamente es trabajar con las longitudes de nombres y tratar la generación de duplicados.

Conexión fácil de IIS con Tomcat

2

Si se quieren procesar páginas JSP y ASP.NET en un mismo servidor no queda más remedio que tener instalados Tomcat e IIS simultáneamente. Si además queremos que las páginas se sirvan por el mismo puerto, que generalmente suele ser el 80, pues ya tenemos un problema. Existen conectores ISAPI que permiten reenviar las peticiones JSP del IIS al Tomcat, como hace el Plesk 9 para Windows, pero siempre los he encontrado complejos de configurar. Sin embargo, en la última instalación de Windows Server 2008 R2 que hemos realizado, hemos encontrado un nuevo conector que simplifica enormemente el trabajo, permitiendo realizarlo en dos pasos.

Partiremos de una instalación funcional de IIS 7.5 en el puerto web estándar, y de Tomcat 7.0.25 en el puerto 8080 con AJP en el puerto 8009. Si no sabes cómo llegar a este punto, mal empezamos… :P

Supondremos que la web JSP que queremos alojar está en

C:\inetpub\wwwroot\miwebaspxjsp.com\partejsp. En tal caso, lo primero que haremos será hacer que Tomcat conozca dicho código, creando un fichero XML en %CATALINA_HOME%\conf\Catalina\localhost, con nombre partejsp.xml, y con el siguiente contenido:

<Context
  displayName="partejsp"
  docBase="C:\inetpub\wwwroot\miwebaspxjsp.com\partejsp"
  path="/partejsp"
  reloadable="true"
/>

Ahora vamos a la URL http://miwebaspxjsp.com:8080/partejsp, y deberíamos ver el contenido servido directamente por Tomcat correctamente. Si no es así, toca revisar las rutas y reiniciar el servicio Tomcat.

Sin embargo, si vamos a la URL http://miwebaspxjsp.com/partejsp, obtendremos un precioso error 404.3, ya que IIS no sabe cómo interpretar el script y además no nos permite descargarlo al no conocer el tipo MIME del fichero.

Ahora la parte mágica: Descarga el proyecto IIS to Tomcat Connector de Bilal. En él encontrarás un instalador que a partir de unos datos mínimos de configuración se encargará de registrarse en el IIS, pudiendo limitarse a los sitios que se le indique, de forma que no haya que configurar nada más que el nuevo documento por defecto index.jsp.

Tras la instalación, prueba de nuevo la URL http://miwebaspxjsp.com/partejsp, y si todo ha ido correctamente, ya se debería mostrar exactamente lo mismo que accediendo a http://miwebaspxjsp.com:8080/partejsp.

Como limitación, indicar que con este sistema siempre se cargaría la web JSP como subdirectorio, en la URL http://www.miwebaspjsp.com/partejsp/. Seguramente se podrá solucionar, pero como no lo hemos necesitado, no he investigado más.

Actualización: Cómo hacerlo funcionar en el raíz y con servlets

Para hacerlo funcionar en el raíz del dominio, podemos utilizar el módulo URL Rewrite de IIS, similar al mod_rewrite de Apache, de forma que redirijamos todas las peticiones a una subcarpeta, y así no tenemos que pelear tanto con la configuración. También debemos preservar la ruta de la cookie, para evitar problemas con las sesiones, con una segunda regla. Quedaría en web.config más o menos así:

        <rewrite>
            <rules>
                <rule name="Reescribimos a subcarpeta" enabled="true">
                    <match url="^(.*)" />
                    <action type="Rewrite" url="carpetaconjsp/{R:1}" />
                </rule>
            </rules>
            <outboundRules>
                <rule name="Reescribimos la ruta de la cookie de sesión">
                    <match serverVariable="RESPONSE_Set_Cookie" pattern="^(.*); Path=/carpetaconjsp(.*)" />
                    <action type="Rewrite" value="{R:1}; Path={R:2}" />
                </rule>
            </outboundRules>
        </rewrite>

Igualmente, si utilizamos servlets, habrá que modificar el manejador por defecto, para que IIS no salte con un 404 si no se llama a algo que no sea un JSP, quedando el siguiente código en web.config:

        <handlers>
            <add name="Boncode" path="*" verb="*" type="BonCodeIIS.BonCodeCallHandler,BonCodeIIS,Version=1.0.0.0,Culture=neutral,PublicKeyToken=ad590a40d40745cf" resourceType="Unspecified" preCondition="integratedMode" />
        </handlers>

Reparación de inicio de Windows 7 tras cambiar la placa base

23

Cuando se actualiza “a lo bestia” el hardware sobre el que corre Windows 7, pueden ocurrir problemas serios, como que Windows se niegue a arrancar, mostrando un BSOD con el código 0x0000007B, que viene a indicar que el sistema operativo no es capaz de acceder al disco. Sobre todo suele ocurrir cuando se cambia el chipset de la placa, o se pasa de modo IDE a AHCI. El problema es debido a que para optimizar el arranque del sistema operativo, se desactivan algunas detecciones de controladores tras la instalación, con lo que al realizar el cambio, pues Windows no es capaz de volver a arrancar.

Para solucionarlo, tendremos que reactivar dichos controladores, como bien se explica en el KB922976, bien restaurando momentáneamente el hardware original, o mediante las herramientas de reparación integradas en el DVD de Windows 7 (en el símbolo de sistema podemos ejecutar RegEdit), o incluso utilizando un editor de registro offline, como el incluido con UBCD4Win. Las claves que debemos modificar son:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Msahci
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\IastorV

Poniendo en ambas el valor de Start a 0.

Ajuste en lote del TTL de los registros DNS con Plesk

0

Antes de realizar una migración de servidor que incluya cambio de IP es muy conveniente modificar el TTL de los registros DNS, que por lo general suele estar establecido en 24 horas, de forma que cuando procedamos a realizar el cambio en estos registros, haciendo que las peticiones cambien de un servidor a otro, minimicemos el tiempo durante el que éstas llegaran a uno u otro servidor de forma indeterminada, por ejemplo a 5 minutos.

En servidores Plesk, este cambio se puede realizar cómodamente modificando la base de datos. Este es el SQL a utilizar a partir de la versión 8.3, y probado sobre una 9.5.1:

UPDATE 'dns_zone' SET 'ttl' = '300', 'ttl_unit' = '60' WHERE 'id' > 1;

Una vez modificada la base de datos, ejecutamos este comando para que Plesk regenere los archivos de zona:

"%plesk_bin%\dnsmng.exe" update *

Hay que tener en cuenta que los cambios no serán inmediatos, debido al propio funcionamiento del sistema DNS, que provoca que la propagación no se pueda garantizar hasta que vaya caducando en la caché de los distintos servidores el registro anterior, así que hay que anticiparse y realizar este cambio al menos 24 horas antes de realizar la modificación de la IP.

Bonus 1: Modificación de la base de datos MDB de Plesk

Si estuvimos poco hábiles el día de la instalación de Plesk y decidimos que utilizase Access en lugar de MySQL, tendremos alguna dificultad para realizar cambios sin instalar el Microsoft Access, del que tendríamos que adquirir una licencia para poder realizar esta modificación, además de que dejarlo instalado en un servidor de producción no mola.

Pero tenemos una buena alternativa: MDB Viewer Plus, que permite examinar y desde hace bien poco también la ejecución de SQL sobre tablas Access, utilizando MDAC, que viene instalado con Windows.

Bonus 2: Comprobación de los registros DNS

Para comprobar que efectivamente el TTL de nuestros registros DNS es el correcto, podemos utilizar el comando dig en Linux contra cualquier servidor DNS, que nos mostrará lo que tenga almacenado:

jefazo@servidor:~$ dig midominio.tld @8.8.8.8

; <<>> DiG 9.7.3 <<>> midominio.tld @8.8.8.8
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 10873
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;midominio.tld.                        IN      A

;; ANSWER SECTION:
midominio.tld.         300     IN      A       1.2.3.4

;; Query time: 108 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Sat Sep 10 22:12:07 2011
;; MSG SIZE  rcvd: 48

Ajustes de IIS 7 en línea de comandos con Appcmd

0

Cuando tenemos que administrar un servidor web de cierta entidad, con muchos dominios, grupos de aplicaciones, etc., e interesa realizar alguna operación en lote sobre un grupo de ellos, no es necesario que nos pasemos media mañana haciendo click, botón derecho, propiedades, avanzadas… En esos casos es cuando vale la pena utilizar Appcmd utilidad provista con IIS 7 (Windows 2008).

La utilidad está en %windir%\system32\inetsrv, aunque también hay una pequeña aplicación de interfaz bastante simple llamada AppcmdUI, pero que nos ofrece la posibilidad de ir autocompletando el comando que vamos generando, lo que suele ser una ayuda, sobre todo al principio.

Una de las capacidades más notorias que nos ofrece Appcmd es el pipelining, lo que nos permite encadenar la salida de un comando como entrada del siguiente, consiguiendo así actuar sobre varios objetos fácilmente. Me explico con un ejemplo práctico:

  1. Obtenemos una lista de los grupos de aplicaciones:
    appcmd apppool list
  2. Modificamos a 30 minutos el tiempo de inactividad de un grupo de aplicaciones previo a su reciclaje:
    appcmd set apppool "pedazodeseñoraweb.es" /processModel.idleTimeout:00:30:00

Si juntamos estos dos comandos, podemos hacer que el tiempo de inactividad de todos los grupos de aplicaciones pase a ser de 30 minutos, con:

appcmd list apppool /xml | appcmd set apppool /in /processModel.idleTimeout:00:30:00

Obsérvese que la salida del primer comando se ha establecido para que se obtenga como XML, con /xml, y que se ha especificado que la entrada del segundo provendrá de su entrada estándar y en formato XML, con /in. Por último, se han unido la salida del primero con la entrada del primero mediante una tubería (|).

Así, podemos hacer cosas chachis, como reciclar todos los procesos, modificar en lote la configuración de los que empiecen por una cadena de texto dada, listar todas las copias de seguridad existentes…

Permitir a un usuario acceder un servidor mediante escritorio remoto

2

Seguro que si habéis necesitado activar el acceso remoto de un usuario no administrador a un servidor Windows que además esté haciendo el rol de controlador de dominio os habréis encontrado con este mensaje, pese a haber añadido el usuario al grupo Usuarios de escritorio remoto:

El motivo es precisamente que es un controlador de dominio, y como tal, tiene una directiva de seguridad específica, que se puede modificar en Herramientas administrativas | Configuración de seguridad predeterminada de controlador de dominio.

En esta consola, desplegamos Configuración de Windows | Configuración de seguridad | Directivas locales | Asignación de derechos de usuario, y en la directiva Permitir inicio de sesión a través de Servicios de Terminal Server añadimos al usuario que nos interese, en la forma DOMINIO\Usuario.

Como cualquier modificación en las directivas, tarda algo en hacerse efectiva, así que si tenemos prisa y no apetece reiniciar, podemos forzarlo con el comando:

gpupdate /force

Instalar paquete de lenguaje español en Windows 2008 R2

2

En los sistemas operativos Windows 2008 R2 y Windows 7 (en sus ediciones superiores) es posible cambiar el idioma completamente, de forma que se puede instalar un DVD del Windows 2008 R2 en su versión estándar x64, pero en inglés, y después realizar las siguientes operaciones para cambiar el idioma completamente, incluyendo la pantalla de inicio:

  1. Obtener el pack de idiomas.
    En Windows 7 Ultimate aparece por defecto en la lista de actualizaciones opcionales de Windows Update.
    En Windows 2008 R2 lo podemos obtener a partir de la imagen ISO con los 35 paquetes de idiomas disponibles o en el centro de descarga de Microsoft, pulsando aquí para la versión en castellano (es-ES).
  2. Si lo hemos obtenido por Windows Update o descargándolo de forma individual, simplemente lanzaremos el ejecutable descargado, lo que procederá a la conversión del usuario actual.
    Si lo obtenemos a partir de la ISO, tendremos un paquete CAB con el idioma que deseemos instalar, y para poder instalarlo ejecutaremos la utilidad Lpksetup.exe, que producirá el mismo resultado.

  3. Una vez instalado el paquete de idiomas (y posiblemente reiniciado el servidor), sólo quedará modificar todas las opciones de configuración regional, a las que se accede a través de Panel de control | Reloj, idioma y región | Cambiar el idioma para mostrar.
  4. Una vez se ha configurado correctamente el usuario, el último paso es establecer esta configuración para la pantalla de inicio de sesión, cuentas del sistema y las nuevas cuentas de usuario. Esto se podrá hacer desde la misma ventana de configuración regional, en la pestaña Administrativo, botón Copiar configuración…

Eso es todo. Con estos procesos habremos obtenido un Windows 2008 R2 o Windows 7 que en lugar de decir “Press CTRL + ALT + DEL to Logon” pasa a decir “Pulse Ctrl + Alt + Supr para iniciar sesión”. Siengo extra-pejiguero, podemos poner pegas como que la cuenta del administrador se seguirá llamando Administrator, pero como lo más correcto por motivos de seguridad es crear una nueva con un nombre de usuario distinto, ya no hay excusa.

Aunque sea un poco offtopic sobre la temática de esta entrada, no puedo dejar de recomendar la web http://www.win2008r2workstation.com/ si se tiene que utilizar el Windows 2008 R2 como estación de trabajo además de servidor, ya que explica cómo habilitar los temas visuales, el servicio de sonido, etc.

Go to Top