Sistemas operativos
Desinstalar manualmente impresora Windows 7
2En 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
0En 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
4Para 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.
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
1De 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.
Acceder a particion de Ubuntu roto mediante LiveCD
0Lo primero es ejecutar el LiveCD
Una vez dentro abriremos una consola y ejecutaremos
$ sudo fdisk -l
Mediante este comando veremos las particiones del disco, en la columna “System” buscamos Linux. Luego en “Device” concretamos la ruta de la partición en la que se encuentra instalado Linux.
Suponiendo que nuestro ubuntu está en /dev/sda1
Montamos la partición en el directorio /mount
$ sudo mount /dev/sda1 /mnt
Montamos el resto de directorios del sistema
$ sudo mount –bind /dev /mnt/dev
$ sudo mount –bind /proc /mnt/proc
$ sudo mount –bind /sys /mnt/sys
Ejecutamos el comando chroot.
De esta manera accedermos a administrar el sistema instalado y roto.
$ sudo chroot /mnt
Como instalar un servidor web en ubuntu 12.04 (Apache, PHP, mySql)
2A continuación describiremos unos pasos básicos para obtener una instalación básica de un servidor web en nuestra máquina con Ubuntu 12.04
Instalar Apache
Para esto ejecutaremos desde la consola
sudo apt-get install apache2 -y
Con esto ya deberíamos tener apache configurado. Solo con poner 127.0.0.1 en nuestro navegador debería mostrarse.
Instalar PHP.
Para esto nuevamente desde el terminal ejecutaremos
sudo apt-get install php5 libapache2-mod-php5 -y
Si queremos que apache se de cuenta tendremos que reiniciarlo ejecutando de la consola
sudo /etc/init.d/apache2 restart
Instalar servidor MySQL.
Ejecutaremos desde la consola
sudo apt-get install mysql-server mysql-client -y
Algo mas….
Finalmente instalaremos algunos complementos que siempre viene biensudo apt-get install php5-mysql php5-curl php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl -yRecuerda volver a reiniciar Apache.
Como apunte breve comentaré unas rutas que tarde o temprano necesitaremos para administrar el servidor
Apache
virtual hosts configurados
/etc/apache2/sites-enabledel virtual host por defecto
/etc/apache2/sites-available/defaultPHP
Archivo de configuración PHP
/etc/php5/apache2/php.iniMySQL
Archivo global de SQL
/etc/mysql/my.cnf
LESS en Ubuntu
1LESS es el lenguaje de estilos dinámico de moda (con permiso Sass ). En este artículo describiremos cómo instalar/usar LESS desde Ubuntu.
A pesar de que no es el objetivo de este artículo detallar las características y las ventajas/inconvenientes de LESS frente a Sass sí dejaremos algunos ejemplos básicos de las ventajas frente a código CSS compilado (el CSS “de toda la vida”). (más…)
.bashrc para SSH en Ubuntu
0Por defecto cuando conectamos a Ubuntu Server por SSH no carga automáticamente el archivo .bashrc de nuestro home.
¿Dónde ponemos los alias entonces?
Debemos crear un archivo .profile en nuestro home (cuyo funcionamiento es el mismo que el antiguo .bash_profile) con el siguiente contenido:
if [ -f ~/.bashrc ]; then . ~/.bashrc fi
De esta forma el archivo .profile será el encargado de buscar el archivo .bashrc y cargarlo en caso de estar disponible.
Traducción de los mensajes de postfix
2Si estás leyendo esto posiblemente sepas inglés, y quizá también seas administrador de algún sistema de correo. Aunque no lo seas, convendrás en que no todos los usuarios de un servidor de correo tienen por qué saber idiomas, así que cuando reciben un mensaje de un tal MAILER-DAEMON, lo primero que hacen es pensar que hay un error en el sistema y llamar directamente al informático, aunque el mensaje sea una confirmación de entrega con un gran successful en el asunto. Es por esto que conviene traducir estos mensajes, o mejor aun mantener el inglés pero añadir el castellano en ellos. Esto se puede hacer fácilmente en postfix, utilizando un fichero de plantilla, siguiendo estos pasos:
Primero averiguamos dónde está la configuración de postfix y el fichero de plantilla:
postconf -n | grep config_directory postconf -n | grep bounce_template_file
Si ya tenemos un fichero de plantilla, simplemente sustituimos el contenido por el que adjuntamos poco después. Si no lo tenemos configurado, modificamos el fichero main.cf
, añadiendo una línea:
bounce_template_file = /etc/postfix/bounce.es-ES.cf
Y creando el fichero /etc/postfix/bounce.es-ES.cf
, con el siguiente contenido:
# # The failure template is used when mail is returned to the sender; # either the destination rejected the message, or the destination # could not be reached before the message expired in the queue. # failure_template = <<EOF Charset: utf-8 From: MAILER-DAEMON (Sistema de entrega de correo) Subject: Servidor de correo: Mensaje no entregado Postmaster-Subject: Servidor de correo: Mensaje no entregado Este es un mensaje de correo enviado automáticamente por el servidor de correo $myhostname. No ha sido posible entregar su mensaje a uno o más destinatarios. El mensaje que causó el error está adjunto a este mensaje. Para más información o cualquier duda, por favor, envíe un mensaje al administrador del sistema en <postmaster>. En tal caso incluya adjunto este mensaje de informe. Puede eliminar el texto del mensaje original que considere, aunque le recomendamos que mantenga intacto el texto de este informe. ------------------------------------------------------------------------------- This is the mail system at host $myhostname. I'm sorry to have to inform you that your message could not be delivered to one or more recipients. It's attached below. For further assistance, please send mail to <postmaster> If you do so, please include this problem report. You can delete your own text from the attached returned message. The mail system EOF # # The delay template is used when mail is delayed. Note a neat trick: # the default template displays the delay_warning_time value as hours # by appending the _hours suffix to the parameter name; it displays # the maximal_queue_lifetime value as days by appending the _days # suffix. # # Other suffixes are: _seconds, _minutes, _weeks. There are no other # main.cf parameters that have this special behavior. # # You need to adjust these suffixes (and the surrounding text) if # you have very different settings for these time parameters. # delay_template = <<EOF Charset: utf-8 From: MAILER-DAEMON (Sistema de entrega de correo) Subject: Servidor de correo: Mensaje pospuesto Postmaster-Subject: Servidor de correo: Mensaje pospuesto Este es un mensaje de correo enviado automáticamente por el servidor de correo $myhostname. ########################################### # ÉSTE ES SÓLO UN MENSAJE DE AVISO. # # NO ES NECESARIO QUE REENVÍE EL MENSAJE. # ########################################### Su mensaje no pudo ser entregado al destinatario después de intentarlo durante $delay_warning_time_hours hora(s). Se seguirá intentando enviar el mensaje hasta que pasen $maximal_queue_lifetime_days días. Para más información o cualquier duda, por favor, envíe un mensaje al administrador del sistema en <postmaster>. En tal caso incluya adjunto este mensaje de informe. Puede eliminar el texto del mensaje original que considere, aunque le recomendamos que mantenga intacto el texto de este informe. ------------------------------------------------------------------------------- This is the mail system at host $myhostname. #################################################################### # THIS IS A WARNING ONLY. YOU DO NOT NEED TO RESEND YOUR MESSAGE. # #################################################################### Your message could not be delivered for $delay_warning_time_hours hour(s). It will be retried until it is $maximal_queue_lifetime_days day(s) old. For further assistance, please send mail to <postmaster> If you do so, please include this problem report. You can delete your own text from the attached returned message. The $mail_name program EOF # # The success template is used when mail is delivered to mailbox, # when an alias or list is expanded, or when mail is delivered to a # system that does not announce DSN support. It is an error to specify # a Postmaster-Subject: here. # success_template = <<EOF Charset: utf-8 From: MAILER-DAEMON (Sistema de entrega de correo) Subject: Servidor de correo: Informe de entrega correcta de mensaje Este es un mensaje de correo enviado automáticamente por el servidor de correo $myhostname. Su mensaje fue entregado correctamente al/a los destinatario/s indicados a continuación. Si el mensaje fue entregado directamente a los destinatarios, no recibirá más notificaciones; en caso contrario, si el mensaje tuviera que pasar por más servidores de correo, es posible que reciba más notificaciones de estos servidores. ------------------------------------------------------------------------------- This is the mail system at host $myhostname. Your message was successfully delivered to the destination(s) listed below. If the message was delivered to mailbox you will receive no further notifications. Otherwise you may still receive notifications of mail delivery errors from other systems. The mail system EOF # # The verify template is used for address verification (sendmail -bv # address...). or for verbose mail delivery (sendmail -v address...). # It is an error to specify a Postmaster-Subject: here. # verify_template = <<EOF Charset: utf-8 From: MAILER-DAEMON (Sistema de entrega de correo) Subject: Servidor de correo: Informe de estado de entrega de mensaje Este es un mensaje de correo enviado automáticamente por el servidor de correo $myhostname. Adjunto a este mensaje se encuentra el informe de entrega solicitado. ------------------------------------------------------------------------------- This is the mail system at host $myhostname. Enclosed is the mail delivery report that you requested. The mail system EOF
Como dato extra, es posible que también quieras modificar el remitente de dichos correos, que suele ser MAILER-DAEMON@hostname
. Esto, como bien se apunta aquí, se soluciona modificando el fichero /etc/mailname
en sistemas Debian, como Ubuntu.
Por último, recargamos la configuración de postfix para que sea efectivo el cambio:
postfix reload
Conexión fácil de IIS con Tomcat
2Si 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…
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>