<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Linux on javierin.com</title>
		<link>https://javierin.com/category/linux/</link>
		<description>Recent content in Linux on javierin.com</description>
		<generator>Hugo</generator>
		<language>es-ES</language>
		
		
		
		
			<lastBuildDate>Mon, 01 Jun 2026 14:54:45 +0000</lastBuildDate>
		
			<atom:link href="https://javierin.com/category/linux/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>Compresión de Memoria en Linux: El Truco para Revivir tu PC en 2025</title>
				<link>https://javierin.com/compresion-de-memoria-linux/</link>
				<pubDate>Mon, 20 Oct 2025 16:13:19 +0000</pubDate>
				<guid>https://javierin.com/compresion-de-memoria-linux/</guid>
				<description>&lt;h1&gt;Compresión de Memoria en Linux: El Truco Definitivo para un Sistema más Rápido en 2025&lt;/h1&gt;&#xA;&lt;p&gt;¿Te suena esta situación? Estás trabajando a tope, con tu navegador lleno de pestañas, el editor de código, Spotify, Slack&amp;#8230; y de repente, todo empieza a ir a tirones. El piloto del disco duro parpadea como un loco y el ordenador se vuelve desesperadamente lento. Tienes un procesador con varios núcleos que se aburre la mayor parte del tiempo, pero parece que la RAM no da más de sí.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Guía Completa de Particionado en Linux [2024]: De Cero a Experto</title>
				<link>https://javierin.com/particionado-de-linux-guia-completa/</link>
				<pubDate>Mon, 13 Oct 2025 22:33:32 +0000</pubDate>
				<guid>https://javierin.com/particionado-de-linux-guia-completa/</guid>
				<description>&lt;p&gt;Si has decidido dar el salto a Linux, ¡enhorabuena! Estás a punto de entrar en un mundo de flexibilidad y control. Pero antes de empezar a disfrutar, hay un paso que a menudo asusta a los recién llegados: el particionado del disco. Nombres como &lt;code&gt;/dev/sda1&lt;/code&gt;, &lt;code&gt;ext4&lt;/code&gt; o &lt;code&gt;swap&lt;/code&gt; pueden sonar a chino, pero no te preocupes. Estamos aquí para desmitificarlo todo.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Particionar Linux&lt;/strong&gt; no es más que dividir tu disco duro en trozos, como si cortaras una tarta. Cada trozo (o partición) tendrá un propósito específico. Y aunque el instalador de tu distribución favorita te ofrecerá opciones automáticas, entender cómo funciona te dará un poder increíble sobre tu sistema.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Cómo Dar una Segunda Vida a un Ordenador Viejo (La Guía Fácil con Linux)</title>
				<link>https://javierin.com/como-dar-una-segunda-vida-a-un-ordenador-antiguo/</link>
				<pubDate>Wed, 24 Sep 2025 13:06:55 +0000</pubDate>
				<guid>https://javierin.com/como-dar-una-segunda-vida-a-un-ordenador-antiguo/</guid>
				<description>&lt;p&gt;¿Tienes un ordenador portátil o de sobremesa con casi una década a sus espaldas cogiendo polvo en un rincón? Ya sabes a cuál me refiero. Ese que tarda una eternidad en arrancar, se atasca al abrir el navegador y te hace perder la paciencia. Intentaste instalarle Windows 10 y fue un desastre, y ni hablemos de Windows 11, que directamente te dijo que no era compatible.&lt;/p&gt;&#xA;&lt;p&gt;Antes de que lo conviertas en un posavasos de diseño o lo lleves al punto limpio, déjame decirte algo: ese ordenador todavía tiene mucha guerra que dar. Hoy te voy a contar &lt;strong&gt;cómo dar una segunda vida a un ordenador viejo&lt;/strong&gt; de una forma sorprendentemente sencilla y, lo mejor de todo, totalmente gratis. La solución tiene un nombre: Linux.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Optimización de Linux con sysctl.conf: Guía para Escritorio y Servidor</title>
				<link>https://javierin.com/optimizacion-del-kernel-linux-con-sysctl-conf-mejora-el-rendimiento-al-maximo/</link>
				<pubDate>Wed, 24 Sep 2025 12:58:05 +0000</pubDate>
				<guid>https://javierin.com/optimizacion-del-kernel-linux-con-sysctl-conf-mejora-el-rendimiento-al-maximo/</guid>
				<description>&lt;p&gt;¿Alguna vez has sentido que a tu sistema Linux, ya sea tu &lt;a href=&#34;https://www.amazon.es/dp/B0DFYR5GZY?tag=javierin-21&amp;linkCode=osi&amp;th=1&amp;psc=1&#34; target=&#34;_blank&#34; rel=&#34;nofollow sponsored noopener&#34;&gt;PC de sobremesa&lt;/a&gt; o ese &lt;a href=&#34;https://www.amazon.es/dp/B0BZVCMMT7?tag=javierin-21&amp;#038;linkCode=osi&amp;#038;th=1&amp;#038;psc=1&#34; target=&#34;_blank&#34; rel=&#34;nofollow sponsored noopener&#34;&gt;servidor que gestionas&lt;/a&gt;, le falta un puntito de velocidad? A veces instalamos la distro que más nos gusta, la ponemos a punto y, con el tiempo, notamos que no va tan fluida como al principio. Antes de pensar en cambiar de hardware, hay un as bajo la manga que muchos usuarios pasan por alto: el fichero &lt;code&gt;sysctl.conf&lt;/code&gt;.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Jellyfin vs Plex: La Alternativa Open Source para tu Servidor Multimedia</title>
				<link>https://javierin.com/jellyfin-vs-plex-la-alternativa-open-source-para-tu-servidor-multimedia/</link>
				<pubDate>Sun, 29 Jan 2023 15:31:49 +0000</pubDate>
				<guid>https://javierin.com/jellyfin-vs-plex-la-alternativa-open-source-para-tu-servidor-multimedia/</guid>
				<description>&lt;p&gt;¿Te imaginas tener tu propio Netflix? Un lugar donde todas tus películas, series, música y fotos están perfectamente organizadas, con carátulas, sinopsis y disponibles para ver en cualquier dispositivo de tu casa. Suena bien, ¿verdad? Durante años, el rey indiscutible para conseguir esto ha sido Plex. Es potente, fácil de usar y muy popular. Pero, ¿y si te dijera que hay una alternativa que te da todo el control, es completamente gratuita y respeta tu privacidad al máximo?&lt;/p&gt;</description>
			</item>
			<item>
				<title>Borrar logs con Systemd / journalctl</title>
				<link>https://javierin.com/borrar-logs-con-systemd-journalctl/</link>
				<pubDate>Sun, 10 Oct 2021 14:22:26 +0000</pubDate>
				<guid>https://javierin.com/borrar-logs-con-systemd-journalctl/</guid>
				<description>&lt;!-- wp:paragraph --&gt;&#xA;&lt;p&gt;Me dejo por aquí unas notas de como borrar logs cuando usamos &lt;em&gt;&lt;strong&gt;systemd&lt;/strong&gt;&lt;/em&gt; / &lt;em&gt;&lt;strong&gt;journalctl&lt;/strong&gt;&lt;/em&gt;. Empieza a ser cada vez más abundante y creo que a más gente le puede resultar de utilidad.&lt;/p&gt;&#xA;&lt;!-- /wp:paragraph --&gt;&#xA;&#xA;&lt;!-- wp:paragraph --&gt;&#xA;&lt;p&gt;Habitualmente estábamos acostumbrados a tener unos loggers de sistema que corrian como un demonio. Algunos populares eran syslog-ng o rsyslog. En los últimos años, con la popularización de systemd, nos encontramos con que hay una pieza nueva en el puzzle llamada &lt;em&gt;&lt;strong&gt;systemd-journald&lt;/strong&gt;&lt;/em&gt;. &lt;/p&gt;</description>
			</item>
			<item>
				<title>Honeypot Fail2ban</title>
				<link>https://javierin.com/honeypot-fail2ban/</link>
				<pubDate>Tue, 21 Sep 2021 23:24:00 +0000</pubDate>
				<guid>https://javierin.com/honeypot-fail2ban/</guid>
				<description>&lt;!-- wp:paragraph --&gt;&#xA;&lt;p&gt;&lt;strong&gt;&lt;span class=&#34;has-inline-color has-vivid-red-color&#34;&gt;CUIDADO. Si no adaptas los puertos del script generador de reglas de IPTABLES puedes acabar bloqueandote el acceso a tí mismo con este fail2ban con honeypot.&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;!-- /wp:paragraph --&gt;&#xA;&#xA;&lt;!-- wp:paragraph --&gt;&#xA;&lt;p&gt;Hace ya unos 15 años que vengo usando fail2ban en algunos equipos expuestos a Internet, aunque personalmente procuro no exponer más que los servicios necesarios. Estos días he migrado la web a otro servidor y he aprovechado para dar una vuelta a la política de seguridad con respecto a los puertos.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Generar licencia Supermicro para poder actualizar la BIOS</title>
				<link>https://javierin.com/generar-licencia-supermicro-para-poder-actualizar-la-bios/</link>
				<pubDate>Wed, 04 Nov 2020 14:34:00 +0000</pubDate>
				<guid>https://javierin.com/generar-licencia-supermicro-para-poder-actualizar-la-bios/</guid>
				<description>&lt;p&gt;Tengo una placa Supermicro X10SRI-F-O y me parece insultante y triste que la funcion de actualizar la BIOS en una placa base Supermicro, salvo si quieres crear un «diskete» sea de pago.&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&lt;p&gt;Los usuarios que hemos comprado &lt;a href=&#34;https://www.amazon.es/dp/B0DT58PFRG?tag=javierin-21&amp;linkCode=osi&amp;th=1&amp;psc=1&#34; target=&#34;_blank&#34; rel=&#34;nofollow sponsored&#34;&gt;una placa base&lt;/a&gt; deberiamos tener maneras sencillas de actualizar la bios y firmwares de la misma sin necesidad de pasar por caja. Supermicro ha decidido que haya que pagar por algo tan elemental.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Añadir clave SSH en NetApp</title>
				<link>https://javierin.com/anadir-clave-ssh-en-netapp/</link>
				<pubDate>Tue, 21 Jan 2020 20:08:44 +0000</pubDate>
				<guid>https://javierin.com/anadir-clave-ssh-en-netapp/</guid>
				<description>&lt;p&gt;Despues de reprovisionar un par de &lt;a href=&#34;https://www.amazon.es/dp/B0C99TX1RM?tag=javierin-21&amp;linkCode=osi&amp;th=1&amp;psc=1&#34; target=&#34;_blank&#34; rel=&#34;nofollow sponsored&#34;&gt;equipos NetApp&lt;/a&gt; me dejo por aqui estas notas para agregar la clave SSH para poder acceder sin poner la contraseña a los equipos NetApp.&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&lt;p&gt;Lo primero debemos entrar por SSH a la controladora y darnos privilegios&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&lt;pre class=&#34;wp-block-preformatted&#34;&gt;priv set advanced&lt;/pre&gt;&#xA;&#xA;&#xA;&#xA;&lt;p&gt;Lo siguiente es desbloquear el uso del usuario de diagnostico&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&lt;pre class=&#34;wp-block-preformatted&#34;&gt;useradmin diaguser unlock&lt;/pre&gt;&#xA;&#xA;&#xA;&#xA;&lt;p&gt;Ahora le pondremos una contraseña (segura) a este usuario. Es un poco confuso ya que aplicamos sobre diaguser pero el login real es «diag»&lt;/p&gt;</description>
			</item>
			<item>
				<title>Arreglar problemas de locales en ubuntu de LC_CTYPE LC_MESSAGES LC_ALL</title>
				<link>https://javierin.com/problema-lc_ctype-lc_messages-lc_all-ubuntu/</link>
				<pubDate>Wed, 16 Oct 2019 10:31:37 +0000</pubDate>
				<guid>https://javierin.com/problema-lc_ctype-lc_messages-lc_all-ubuntu/</guid>
				<description>&lt;!-- wp:paragraph --&gt;&#xA;&lt;p&gt;A continuación os dejo una serie de soluciones que me han ido funcionando históricamente para resolver problemas de locale: LC_TYPE, LC_MESSAGES, LC_ALL. &lt;/p&gt;&#xA;&lt;!-- /wp:paragraph --&gt;&#xA;&#xA;&lt;!-- wp:paragraph {&#34;textColor&#34;:&#34;very-dark-gray&#34;,&#34;backgroundColor&#34;:&#34;vivid-green-cyan&#34;} --&gt;&#xA;&lt;p class=&#34;has-text-color has-background has-very-dark-gray-color has-vivid-green-cyan-background-color&#34;&gt;Actualizado &lt;strong&gt;2019&lt;/strong&gt; - Incluyo una forma de solucionar el &lt;strong&gt;error de locale&lt;/strong&gt; en Raspbian Buster.&lt;/p&gt;&#xA;&lt;!-- /wp:paragraph --&gt;&#xA;&#xA;&lt;!-- wp:heading {&#34;level&#34;:4} --&gt;&#xA;&lt;h4&gt;Solución a &lt;strong&gt;error de locale&lt;/strong&gt; original de 2009:&lt;/h4&gt;&#xA;&lt;!-- /wp:heading --&gt;&#xA;&#xA;&lt;!-- wp:preformatted {&#34;className&#34;:&#34;lang:default highlight:0 decode:true&#34;} --&gt;&#xA;&lt;pre class=&#34;wp-block-code&#34;&gt;locale: Cannot set LC_CTYPE to default locale: No such file or directory&#xA;locale: Cannot set LC_MESSAGES to default locale: No such file or directory&#xA;locale: Cannot set LC_ALL to default locale: No such file or directory&lt;/pre&gt;&#xA;&lt;!-- /wp:preformatted --&gt;&#xA;&#xA;&lt;!-- wp:paragraph --&gt;&#xA;&lt;p&gt;Podemos probar a solucionarlo con:&lt;/p&gt;</description>
			</item>
			<item>
				<title>Chuleta de comandos OpenSSL</title>
				<link>https://javierin.com/chuleta-de-comandos-openssl/</link>
				<pubDate>Tue, 03 Sep 2019 06:55:21 +0000</pubDate>
				<guid>https://javierin.com/chuleta-de-comandos-openssl/</guid>
				<description>&lt;!-- wp:paragraph --&gt;&#xA;&lt;p&gt;Esta es una lista en construcción de comandos que me resultan útiles para trabajar con certificados en el día a día. Es necesario tener instalada la herramienta &lt;a href=&#34;https://www.openssl.org/&#34; target=&#34;_blank&#34; rel=&#34;noreferrer noopener&#34; aria-label=&#34;OpenSSL (abre en una nueva pestaña)&#34;&gt;OpenSSL&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;!-- /wp:paragraph --&gt;&#xA;&#xA;&lt;!-- wp:heading --&gt;&#xA;&lt;h2&gt;Extraer la clave privada de un .p12 (PFX)&lt;/h2&gt;&#xA;&lt;!-- /wp:heading --&gt;&#xA;&#xA;&lt;!-- wp:paragraph --&gt;&#xA;&lt;p&gt;De esta tengo dos variantes. Podemos querer &lt;strong&gt;guardar la clave privada&lt;/strong&gt; cifrada o sin cifrar (con una frase que elijamos). P12 y PFX nos sirven indistintamente. PFX es un contenedor bastante popular en el que algunas entidades certificadoras te ofrecen la descarga de los certificados que has comprado.&lt;/p&gt;</description>
			</item>
			<item>
				<title>¿Qué es la tecla SysRQ?</title>
				<link>https://javierin.com/que-es-la-tecla-sysrq/</link>
				<pubDate>Tue, 03 Apr 2018 02:12:08 +0000</pubDate>
				<guid>https://javierin.com/que-es-la-tecla-sysrq/</guid>
				<description>&lt;h3&gt;¿Qué es la tecla SysRQ?&lt;/h3&gt;&#xA;&lt;p&gt;En algunos &lt;a href=&#34;https://www.amazon.es/dp/B0CSYQWWTZ?tag=javierin-21&amp;linkCode=osi&amp;th=1&amp;psc=1&#34; target=&#34;_blank&#34; rel=&#34;nofollow sponsored&#34;&gt;teclados&lt;/a&gt; podemos encontrar «SysRQ» en la misma tecla que usamos para imprimir pantalla. SysRQ es una tecla mágica (se la conoce como «Magic Key» que permite llevar a cabo una serie de acciones por parte de administradores del sistema. Hoy en día, con la popularización de los entornos de escritorio, ha caído en desuso, pero hoy me ha llamado la atención que ya casi ningún teclado trae SysRQ en la tecla de Imprimir pantalla.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Reiniciar Linux automáticamente tras un kernel panic</title>
				<link>https://javierin.com/reiniciar-linux-automaticamente-tras-un-kernel-panic/</link>
				<pubDate>Tue, 03 Apr 2018 01:31:40 +0000</pubDate>
				<guid>https://javierin.com/reiniciar-linux-automaticamente-tras-un-kernel-panic/</guid>
				<description>&lt;p&gt;En ocasiones podemos encontrarnos con &lt;a href=&#34;https://www.amazon.es/dp/B0CJQG8CWJ?tag=javierin-21&amp;linkCode=osi&amp;th=1&amp;psc=1&#34; target=&#34;_blank&#34; rel=&#34;nofollow sponsored&#34;&gt;un servidor&lt;/a&gt; que muestra un kernel panic. En lenguaje coloquial, se queda colgado.&lt;/p&gt;&#xA;&lt;h3&gt;¿Qué es un kernel panic?&lt;/h3&gt;&#xA;&lt;p&gt;De una forma muy genérica, el kernel del sistema operativo se encuentra con una situación de un error irrecuperable ante el que la mejor opción es parar el sistema. De no hacerlo, podríamos llegar a una situación peor de pérdida de datos, por ejemplo. En ocasiones, el kernel vuelca una imagen de la memoria a disco para un análisis posterior. En Windows, el equivalente al kernel panic es la famosa pantalla azul denominada BSOD.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Desbloquear cuenta root en Linux</title>
				<link>https://javierin.com/desbloquear-cuenta-root-linux/</link>
				<pubDate>Wed, 20 Sep 2017 09:41:27 +0000</pubDate>
				<guid>https://javierin.com/desbloquear-cuenta-root-linux/</guid>
				<description>Realmente este post va sobre desbloquear cualquier cuenta bloqueada en Linux, pero el caso más habitual es que haya sido la de root. Me ocurre de forma repetida con un appliance virtual que tiene unos requisitos de contraseña bastante peculiares y en cuanto te equivocas 3 veces, te quedas fuera.&#xA;&#xA;Para &lt;strong&gt;desbloquear una cuenta en Linux&lt;/strong&gt; necesitamos:&#xA;&lt;ul&gt;&#xA; &#x9;&lt;li&gt;Acceso a reiniciar el equipo&lt;/li&gt;&#xA; &#x9;&lt;li&gt;Acceso directo por consola (o KVM)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;Lo primero que debemos hacer es reiniciar el equipo hasta que nos salga el menú de GRUB. En ese momento seleccionamos la opción de arranque normal y pulsamos &#34;e&#34; para editar la línea con que se arranca el sistema&#xA;&#xA;&lt;a href=&#34;http://javierin.com/wp-content/uploads/2017/09/Selection_00962.png&#34;&gt;&lt;img class=&#34;alignnone size-medium wp-image-8295&#34; src=&#34;http://javierin.com/wp-content/uploads/2017/09/Selection_00962-300x149.png&#34; alt=&#34;arrancar linux sin saber password&#34; width=&#34;300&#34; height=&#34;149&#34; / loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&lt;/a&gt;&#xA;&#xA;Ahora buscaremos la línea en que se especifica el kernel y volveremos a darle a &#34;e&#34;&#xA;&#xA;&lt;a href=&#34;http://javierin.com/wp-content/uploads/2017/09/Selection_00963.png&#34;&gt;&lt;img class=&#34;alignnone size-medium wp-image-8294&#34; src=&#34;http://javierin.com/wp-content/uploads/2017/09/Selection_00963-300x148.png&#34; alt=&#34;arrancar linux sin saber password&#34; width=&#34;300&#34; height=&#34;148&#34; / loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&lt;/a&gt;&#xA;&#xA;Iremos al final de la línea y añadiremos &lt;em&gt;init=/bin/bash&lt;/em&gt; para a continuación pulsar ESC&#xA;&#xA;&lt;a href=&#34;http://javierin.com/wp-content/uploads/2017/09/Selection_00964.png&#34;&gt;&lt;img class=&#34;alignnone size-medium wp-image-8293&#34; src=&#34;http://javierin.com/wp-content/uploads/2017/09/Selection_00964-300x148.png&#34; alt=&#34;arrancar linux sin saber password&#34; width=&#34;300&#34; height=&#34;148&#34; / loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&lt;/a&gt;&#xA;&#xA;Pulsamos b y el arranque continuará con el nuevo parámetro&#xA;&#xA;Es posible que nuestro filesystem esté montado como solo lectura. Para montarlo en modo escritura usaremos&#xA;&#xA;&lt;em&gt;mount -o remount,rw /&lt;/em&gt;&#xA;&#xA;Si queremos desbloquear una cuenta bloqueada mediante pam_tally usaremos&#xA;&#xA;&lt;em&gt;pam_tally --user nombreusuario -- reset &lt;/em&gt;&#xA;&#xA;OJO, wordpress convierte los dobles guiones en uno largo. El comando usa DOS GUIONES para sus parámetros.&#xA;&lt;h3&gt;Cambiar password de usuario&lt;/h3&gt;&#xA;El siguiente paso lógico es poner una password al usuario que si podamos escribir. Podemos cambiar el password con el comando&#xA;&#xA;&lt;em&gt;passwd nombreusuario&lt;/em&gt;&#xA;&lt;h3&gt;Desbloquear historial de passwords&lt;/h3&gt;&#xA;Si obtenemos un error porque ese password ya ha sido utilizado anteriormente, es porque tenemos activo el historial de contraseñas.&#xA;&#xA;&lt;a href=&#34;http://javierin.com/wp-content/uploads/2017/09/Selection_00965.png&#34;&gt;&lt;img class=&#34;alignnone size-medium wp-image-8292&#34; src=&#34;http://javierin.com/wp-content/uploads/2017/09/Selection_00965-300x70.png&#34; alt=&#34;desactivar historial de passwords&#34; width=&#34;300&#34; height=&#34;70&#34; / loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&lt;/a&gt;&#xA;&#xA;Para vaciar el historial de contraseñas en Linux podemos usar el comando&#xA;&#xA;&lt;em&gt;:&amp;gt; /etc/security/opassword&lt;/em&gt;&#xA;&#xA;Si, eso son dos puntos y un símbolo de mayor que, como una carita sonriente. Eso trunca el fichero dejándolo a 0.&#xA;&lt;h3&gt;Desactivar Pam Tally y el bloqueo de cuentas&lt;/h3&gt;&#xA;Por último, si esto resulta un engorro, podemos directamente desactivar el bloqueo de cuentas automático en Linux de la siguiente manera:&#xA;&#xA;Editamos el archivo &lt;em&gt;/etc/pam.d/common-auth&lt;/em&gt;&#xA;&#xA;Comentamos la línea que pone &lt;em&gt;pam_tally2.so&lt;/em&gt;&#xA;&#xA;&lt;a href=&#34;http://javierin.com/wp-content/uploads/2017/09/Selection_00966.png&#34;&gt;&lt;img class=&#34;alignnone size-medium wp-image-8291&#34; src=&#34;http://javierin.com/wp-content/uploads/2017/09/Selection_00966-300x148.png&#34; alt=&#34;desactivar pam_tally&#34; width=&#34;300&#34; height=&#34;148&#34; / loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&lt;/a&gt;</description>
			</item>
			<item>
				<title>Obtener el numero de serie del disco duro</title>
				<link>https://javierin.com/obtener-numero-serie-del-disco-duro/</link>
				<pubDate>Wed, 11 May 2016 11:30:58 +0000</pubDate>
				<guid>https://javierin.com/obtener-numero-serie-del-disco-duro/</guid>
				<description>&lt;p&gt;En ocasiones tenemos que tramitar una garantia de un &lt;a href=&#34;https://www.amazon.es/dp/B0CCN9NHTC?tag=javierin-21&amp;linkCode=osi&amp;th=1&amp;psc=1&#34; target=&#34;_blank&#34; rel=&#34;nofollow sponsored&#34;&gt;disco duro&lt;/a&gt; con el vendedor o fabricante y nos piden el numero de serie. Si ese equipo no tiene acceso a internet, es posible que no tengamos ocasion de identificar todos los datos del disco duro. Vamos a ver diferentes formas de obtener el numero de serie de un disco duro en Linux.&lt;/p&gt;&#xA;&lt;h3&gt;Obtener el numero de serie del disco duro con HDPARM&lt;/h3&gt;&#xA;&lt;p&gt;Usando HDPARM podremos configurar todos los flags disponibles en cualquier disco duro, sin embargo también nos sirve como herramienta de consulta de información. Para obtener el numero de serie de un disco duro con HDPARM usaremos la siguiente sintaxis:&lt;/p&gt;</description>
			</item>
			<item>
				<title>Como saber cuanta swap usan los procesos en Linux</title>
				<link>https://javierin.com/saber-cuanta-swap-usan-los-procesos-en-linux/</link>
				<pubDate>Wed, 30 Mar 2016 18:29:47 +0000</pubDate>
				<guid>https://javierin.com/saber-cuanta-swap-usan-los-procesos-en-linux/</guid>
				<description>&lt;p&gt;Hay veces que nos encontramos con que un ordenador está swapeando pero no tenemos claro de donde viene ese uso de memoria swap. Para saber cuanta swap usan los procesos en Linux podemos hacer uso de este script. Es una modificación del original escrito por &lt;a href=&#34;http://northernmost.org/blog/find-out-what-is-using-your-swap/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Erik Ljungstrom&lt;/a&gt;. En su versión era necesario tener permisos de root para ejecutarlo. En esta versión obtenemos el uso de swap de los procesos de Linux con un usuario con permisos normales.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Comprobar la respuesta HTTP de un listado de URLs</title>
				<link>https://javierin.com/comprobar-la-respuesta-http-listado-urls/</link>
				<pubDate>Mon, 28 Mar 2016 12:52:03 +0000</pubDate>
				<guid>https://javierin.com/comprobar-la-respuesta-http-listado-urls/</guid>
				<description>En esta entrada vamos a ver una forma sencilla de comprobar el codigo HTTP de respuesta para un listado grande de URLs&#xA;&#xA;Este puede servirnos si tenemos un gran listado de URLs y queremos saber cuales de ellos fallan. En mi caso, tenía un listado de imágenes de una tienda y me estaban fallando la gran mayoría, por lo que me decidí a comprobar cuales de ellas devolvían un HTTP 200 y cuales un HTTP 404.&#xA;&#xA;Para comprobar la respuesta HTTP del listado de urls, lo primero que tenemos que hacer es colocar el listado en un archivo de texto, una por línea. En mi caso lo he llamado listado.txt&#xA;&#xA;Lo siguiente que debemos hacer es lanzar el siguiente comando&#xA;&lt;pre class=&#34;wp-block-code&#34;&gt;while read linea; do echo -n &#34;$linea : &#34;; curl -o /dev/null --silent --head --write-out &#39;%{http_code}&#39; &#34;$linea&#34;; echo &#34; &#34;; done &amp;lt; listado.txt&lt;/pre&gt;&#xA;Con esto, obtendremos una linea que incluirá la URL y el codigo de respuesta HTTP que devuelve el servidor para la misma&#xA;&#xA;&amp;nbsp;</description>
			</item>
			<item>
				<title>Cambiar el timeout en el cliente SSH</title>
				<link>https://javierin.com/cambiar-timeout-cliente-ssh/</link>
				<pubDate>Thu, 21 Jan 2016 13:09:13 +0000</pubDate>
				<guid>https://javierin.com/cambiar-timeout-cliente-ssh/</guid>
				<description>&lt;p&gt;Si tenemos algun script que ejecuta remotamente comandos en muchos &lt;a href=&#34;https://www.amazon.es/dp/B0BZVCMMT7?tag=javierin-21&amp;linkCode=osi&amp;th=1&amp;psc=1&#34; target=&#34;_blank&#34; rel=&#34;nofollow sponsored&#34;&gt;equipos&lt;/a&gt; que estaban apagados, inaccesibles, etc&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&lt;p&gt;Para cambiar el timeout en el cliente SSH y obtener fallos de timeout de forma más rápida, podemos usar este parámetro en el cliente ssh, que indica en &lt;strong&gt;segundos&lt;/strong&gt; el tiempo de timeout de SSH.&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&lt;p&gt;&lt;code&gt;-o ConnectTimeout=3&amp;nbsp;&lt;/code&gt;&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&lt;p&gt;De esta forma, a los 3 segundos de intentar conectar, el cliente abortará la conexión, dará un error de timeout y seguirá a otra cosa, entorpeciendo mucho menos la ejecución de nuestro script.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Repetir comandos en Linux sin watch</title>
				<link>https://javierin.com/repetir-comandos-en-linux-sin-watch/</link>
				<pubDate>Tue, 06 Oct 2015 16:22:19 +0000</pubDate>
				<guid>https://javierin.com/repetir-comandos-en-linux-sin-watch/</guid>
				<description>&lt;p&gt;En distribuciones linux es muy común disponer de una herramienta llamada watch que nos permite ejecutar comandos con una determinada periodicidad para ver por ejemplo el progreso de una copia de un archivo. Para quien no lo haya usado nunca, el comando watch se ejecuta por ejemplo de la siguiente manera:&lt;/p&gt;&#xA;&lt;pre class=&#34;wp-block-code&#34;&gt;watch -n X &#34;comando complejo | otracosa mariposa&#34;&lt;/pre&gt;&#xA;&lt;p&gt;Donde X es el numero de segundos que queremos entre cada ejecución del comando. Te recomiendo meter el comando entre comillas para asegurarnos de que se ejecuta completamente, incluidos pipes, redirecciones, etc.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Inputrc: Configurar Control flecha</title>
				<link>https://javierin.com/inputrc-configurar-control-flecha/</link>
				<pubDate>Thu, 23 Jul 2015 08:56:57 +0000</pubDate>
				<guid>https://javierin.com/inputrc-configurar-control-flecha/</guid>
				<description>&lt;p&gt;Si eres usuario habitual de terminal en Linux, uno de los &lt;a href=&#34;https://www.amazon.es/dp/B07W6JPM9R?tag=javierin-21&amp;linkCode=osi&amp;th=1&amp;psc=1&#34; target=&#34;_blank&#34; rel=&#34;nofollow sponsored&#34;&gt;atajos de teclado&lt;/a&gt; más habituales es usar Control Flecha para moverse de una palabra a otra. En algunos equipos, sin embargo, podemos encontrarnos con que esta combinación nos devuelve &lt;strong&gt;5D&lt;/strong&gt; en vez del esperado salto de palabra en el cursor.&lt;/p&gt;&#xA;&lt;pre class=&#34;wp-block-code&#34;&gt;root@equipo:~/#: la la la5D5D5D&lt;/pre&gt;&#xA;&lt;p&gt;Para solucionar esto, deberemos configurar esos bindings de teclado en un archivo en nuestro home, llamado  &lt;strong&gt;.inputrc&lt;/strong&gt; para que se activen al logarnos&lt;/p&gt;</description>
			</item>
			<item>
				<title>apt-cacher 403 Access to cache prohibited</title>
				<link>https://javierin.com/apt-cacher-403-access-to-cache-prohibited/</link>
				<pubDate>Tue, 21 Jul 2015 10:10:13 +0000</pubDate>
				<guid>https://javierin.com/apt-cacher-403-access-to-cache-prohibited/</guid>
				<description>Apt-cacher es un software que permite cachear y hacer de proxy entre tus equipos debian / ubuntu / mint, etc, y los repositorios oficiales de tu distribución derivada de debian. Su uso práctico puede ser variado:&#xA;&lt;ul&gt;&#xA;&#x9;&lt;li&gt;Proporcionar acceso a los repositorios a máquinas que no deben tener acceso a Internet, haciendo de proxy.&lt;/li&gt;&#xA;&#x9;&lt;li&gt;Disminuir el ancho de banda utilizado con las actualizaciones de paquetes de la distribución, cacheando localmente los paquetes en la primera petición de los mismos.&lt;/li&gt;&#xA;&#x9;&lt;li&gt;Filtrado de qué equipos pueden realizar actualizaciones de versión de sus paquetes.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;Esta última funcionalidad es la que puedes haberte encontrado si estas teniendo un error 403 en apt-cacher como el que puedes ver a continuación:&#xA;&lt;pre class=&#34;wp-block-code&#34;&gt;Failed to fetch http://ip.apt-cacher:puerto/ftp.uk.debian.org/debian/dists/jessie-updates/main/source/Sources 403 Access to cache prohibited&lt;/pre&gt;&#xA;&lt;h3&gt;apt-cacher y 403 Access to cache prohibited&lt;/h3&gt;&#xA;Para solucionar el error, debemos editar el archivo&#xA;&lt;pre class=&#34;wp-block-code&#34;&gt;/etc/apt-cacher/apt-cacher.conf&lt;/pre&gt;&#xA;Una vez lo tengamos abierto, debemos buscar la opción &lt;em&gt;allowed-hosts=&lt;/em&gt; y configurar en ella las ips / redes a los que queremos permitir la utilización de nuestro apt-cacher. Por ejemplo:&#xA;&lt;pre class=&#34;wp-block-code&#34;&gt;allowed-hosts=10.1.2.0/24, 10.10.10.27/32, 10.20.30.1-200&lt;/pre&gt;&#xA;Como ves, la sintaxis para añadir redes / hosts específicos es muy flexible, así que no deberías tener grandes problemas para configurarla.&#xA;&#xA;Una vez guardados los cambios, reinicia tu servicio apt-cacher&#xA;&#xA;&amp;nbsp;</description>
			</item>
			<item>
				<title>Configurar Dnsmasq para tus dominios de la VPN</title>
				<link>https://javierin.com/configurar-dnsmasq-para-tus-dominios-de-la-vpn/</link>
				<pubDate>Tue, 07 Jul 2015 18:47:50 +0000</pubDate>
				<guid>https://javierin.com/configurar-dnsmasq-para-tus-dominios-de-la-vpn/</guid>
				<description>&lt;p&gt;Si te conectas usando openvpn a tu VPN del trabajo es probable que hayas tenido alguna vez problemas para acceder a dominios internos de la VPN porque dnsmasq no te actualizaba la configuración de servidores DNS que te proporcionaba tu &lt;a href=&#34;https://www.amazon.es/dp/B0CG1CPMBV?tag=javierin-21&amp;linkCode=osi&amp;th=1&amp;psc=1&#34; target=&#34;_blank&#34; rel=&#34;nofollow sponsored&#34;&gt;gateway de acceso VPN&lt;/a&gt;. En mi caso, con un gateway Cisco, al conectar la VPN con openconnect no me configuraba las DNS bien.&lt;/p&gt;&#xA;&lt;p&gt;Rebuscando un poco, encontré que se pueden definir servidores DNS predeterminados para los dominios que tu quieras en la configuración de dnsmaq, veamos como:&lt;/p&gt;</description>
			</item>
			<item>
				<title>Rsync - Funcionamiento y opciones</title>
				<link>https://javierin.com/rsync-funcionamiento-opciones/</link>
				<pubDate>Mon, 08 Jun 2015 11:34:32 +0000</pubDate>
				<guid>https://javierin.com/rsync-funcionamiento-opciones/</guid>
				<description>&lt;h2&gt;¿Qué es Rsync?&lt;/h2&gt;&#xA;&lt;p&gt;Hoy me preguntaba un amigo un poco confuso con el funcionamiento de rsync, dado que las copias le estaban tardando mucho en hacerse. Rsync es un programa de sincronización de archivos con multitud de opciones y uno de mis preferidos a la hora de transferir información de un lado a otro, tanto en local como entre diferentes &lt;a href=&#34;https://www.amazon.es/dp/B0C572FQXX?tag=javierin-21&amp;linkCode=osi&amp;th=1&amp;psc=1&#34; target=&#34;_blank&#34; rel=&#34;nofollow sponsored&#34;&gt;servidores&lt;/a&gt;. Dispone de dos modos de funcionamiento básicos:&lt;/p&gt;&#xA;&lt;h3&gt;Rsync Local&lt;/h3&gt;&#xA;&lt;p&gt;Rsync funcionará como una herramienta de copiado normal entre el origen y destino locales que se indiquen. En este modo, rsync copia la totalidad de archivos, al presuponerse que es más rápido copiar la información que calcular diferencias entre origen y destino. &lt;strong&gt;Esto se aplica igualmente cuando nuestras rutas locales son puntos de montaje por red&lt;/strong&gt;.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Operaciones con direcciones MAC</title>
				<link>https://javierin.com/operaciones-con-direcciones-mac/</link>
				<pubDate>Thu, 12 Mar 2015 12:49:50 +0000</pubDate>
				<guid>https://javierin.com/operaciones-con-direcciones-mac/</guid>
				<description>En mi trabajo es habitual trabajar con numeros en hexadecimal, en concreto con direcciones MAC. Ciertas operaciones requieren sumar o restar en hexadecimal y a veces puede suponer un problema. Además, según de donde vengan los datos, las macs pueden venir con guiones, dos puntos o sin separar.&#xA;&#xA;Como es algo que hago de forma más o menos habitual, me lo dejo por aquí apuntado por si a alguien más le sirve&#xA;&lt;h2&gt;Script para realizar operaciones con direcciones MAC en hexadecimal&lt;/h2&gt;&#xA;Explicacion Previa&#xA;&lt;ul&gt;&#xA;&#x9;&lt;li&gt;Partiremos de un archivo en el que tenemos las macs. Pueden venir sin separar, separadas con guiones o con dos puntos.&lt;/li&gt;&#xA;&#x9;&lt;li&gt;Una de las variables, $OPERACION define la operacion de sumar o restar para las direcciones MAC.&lt;/li&gt;&#xA;&#x9;&lt;li&gt;El script saca un archivo de destino con las macs procesadas, con el mismo nombre del archivo de origen añadiéndole la fecha.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;pre class=&#34;wp-block-code&#34;&gt;#!/bin/sh&#xA;&#xA;ORIGENMACS=&#34;./sourcefile&#34; # CAMBIAR&#xA;TEMPMACS=&#34;./macs-temp&#34;&#xA;OPERACION=&#34;+1&#34;&#xA;DESTINOMACS=$ORIGENMACS&#34;-procesadas-`date +%Y%m%d`&#34;&#xA;&#xA;# Limpieza inicial&#xA;&#xA;rm -f $TEMPMACS $DESTINOMACS&#xA;&#xA;# Eliminamos guiones y dos puntos de las macs, si viniesen. Pasamos a mayusculas la MAC&#xA;sed -e &#39;s/[:-]//g&#39; $ORIGENMACS | tr [[:lower:]] [[:upper:]] &amp;gt; $TEMPMACS&#xA;&#xA;for linea in $(cat $TEMPMACS); do&#xA;MACTRANSFORMADA=`echo &#34;obase=16;ibase=16;$linea$OPERACION&#34;|bc`&#xA;# Comprobamos si a la mac le faltan ceros delante&#xA;if [ ${#MACTRANSFORMADA} -lt 12 ]; then&#xA;# Por algun motivo, printf parece no querer rellenar con ceros cuando se trata de un string asi que le hacemos trampa&#xA;printf &#39;%012sn&#39; $MACTRANSFORMADA |sed -e &#39;s/ /0/g&#39; |sed -e &#39;s/[0-9A-F]{2}/&amp;amp;-/g&#39; -e &#39;s/-$//&#39; &amp;gt;&amp;gt; $DESTINOMACS&#xA;else&#xA;echo $MACTRANSFORMADA |sed -e &#39;s/[0-9A-F]{2}/&amp;amp;-/g&#39; -e &#39;s/-$//&#39; &amp;gt;&amp;gt; $DESTINOMACS&#xA;fi&#xA;done&#xA;rm $TEMPMACS&lt;/pre&gt;&#xA;Uno de los aspectos que contempla este script es que las macs originales incluyan ceros al principio, ya que bc se lo lleva por delante al hacer la operación. Una vez termina la operación, el script se encarga de rellenar con ceros los dígitos de la mac que faltan. También entrega las macs definitivas en mayúsculas y separadas por guiones. Si queremos entregarlas separadas por otro caracter, hay que cambiar los seds de dentro del IF.</description>
			</item>
			<item>
				<title>Pasar Mayusculas a Minusculas en Linux</title>
				<link>https://javierin.com/pasar-mayusculas-a-minusculas-en-linux/</link>
				<pubDate>Fri, 06 Mar 2015 12:04:30 +0000</pubDate>
				<guid>https://javierin.com/pasar-mayusculas-a-minusculas-en-linux/</guid>
				<description>Hoy estabamos comentando un compañero de trabajo y yo diferentes formas de convertir mayúsculas a minúsculas en Linux y he decidido plasmarlo en un post para futura referencia.&#xA;&#xA;Aunque seguramente hay más formas de hacerlo, se nos han ocurrido cuatro diferentes a botepronto. Si aparecen más mediante comentarios de la gente o porque se me ocurran, iré ampliando este post.&#xA;&lt;h2&gt;Cambiar Mayusculas / Minusculas con TR&lt;/h2&gt;&#xA;La sintaxis de tr es bastante sencilla y se asemeja en cierta forma a la que podemos estar acostumbrados en BBCode en diferentes aplicaciones dedicadas a foros.&#xA;&lt;h3&gt;Convertir Mayusculas a Minusculas con TR&lt;/h3&gt;&#xA;Aqui indicamos a tr que partimos de mayusculas para convertirlas en minusculas&#xA;&lt;pre class=&#34;wp-block-code&#34;&gt;javi@trabajo:/tmp$ echo JAVIERIN.COM |tr [[:upper:]] [[:lower:]]&#xA;javierin.com&lt;/pre&gt;&#xA;&lt;h3&gt;Convertir Minusculas a Mayusculas con TR&lt;/h3&gt;&#xA;Aqui indicaremos que los strings de partida son en minusculas para pasarlos a mayusculas.&#xA;&lt;pre class=&#34;wp-block-code&#34;&gt;javi@trabajo:/tmp$ echo javierin.com |tr [[:lower:]] [[:upper:]]&#xA;JAVIERIN.COM&lt;/pre&gt;&#xA;&lt;h2&gt;Cambiar Minusculas / Mayusculas con BASH&lt;/h2&gt;&#xA;La siguiente forma de pasar de mayusculas a minusculas en linux es mediante el uso del comando &lt;strong&gt;echo&lt;/strong&gt; de &lt;strong&gt;bash&lt;/strong&gt;. Esta forma necesita una versión de Bash 4.0 o superior.&#xA;&lt;h3&gt;Convertir Minusculas a Mayusculas con BASH&lt;/h3&gt;&#xA;En esta forma, usamos el ^^ en el echo para indicar que buscamos convertir minusculas a mayusculas.&#xA;&lt;pre class=&#34;wp-block-code&#34;&gt;javi@trabajo:/tmp$ variable=&#34;javierin.com&#34;; echo ${variable^^}&#xA;JAVIERIN.COM&lt;/pre&gt;&#xA;&lt;h3&gt;Convertir Mayusculas a Minusculas con BASH&lt;/h3&gt;&#xA;En esta forma, usamos las ,, para indicar que queremos pasar a minusculas la variable.&#xA;&lt;pre class=&#34;wp-block-code&#34;&gt;javi@trabajo:/tmp$ variable=&#34;JAVIERIN.COM&#34;; echo ${variable,,}&#xA;javierin.com&lt;/pre&gt;&#xA;&lt;h2&gt;Cambiar Minusculas / Mayusculas con AWK&lt;/h2&gt;&#xA;La siguiente forma de pasar de mayusculas a minusculas en linux es mediante el uso de &lt;strong&gt;awk&lt;/strong&gt;. Awk es un potentísimo comando sobre el que se han escrito libros de cientos de páginas con el que podemos manipular de formas inimaginables el texto en nuestros scripts.&#xA;&lt;h3&gt;Convertir Minusculas a Mayusculas con AWK&lt;/h3&gt;&#xA;En este ejemplo usaremos el comando toupper de awk para convertir la entrada a mayusculas&#xA;&lt;pre class=&#34;wp-block-code&#34;&gt;javi@trabajo:/tmp$ echo &#34;javierin.com&#34; |awk &#39;{print toupper($0)}&#39;&#xA;JAVIERIN.COM&lt;/pre&gt;&#xA;&lt;h3&gt;Convertir Mayusculas a Minusculas con AWK&lt;/h3&gt;&#xA;En este ejemplo usaremos el comando tolower para transformar la entrada a minusculas.&#xA;&lt;pre class=&#34;wp-block-code&#34;&gt;javi@trabajo:/tmp$ echo &#34;JAVIERIN.COM&#34; |awk &#39;{print tolower($0)}&#39;&#xA;javierin.com&lt;/pre&gt;&#xA;&lt;h2&gt;Cambiar Minusculas / Mayusculas con PERL&lt;/h2&gt;&#xA;La siguiente forma de pasar de mayusculas a minusculas en linux es mediante el uso de &lt;strong&gt;perl&lt;/strong&gt;. Usaremos parámetros  lc / uc de su función print para formatear la salida de la misma.&#xA;&lt;h3&gt;Convertir Minusculas a Mayusculas con PERL&lt;/h3&gt;&#xA;En este ejemplo usaremos la función &lt;strong&gt;print uc&lt;/strong&gt; de perl para convertir la entrada a mayusculas&#xA;&lt;pre class=&#34;wp-block-code&#34;&gt;javi@trabajo:/tmp$ echo &#34;JAVIERIN.COM&#34; |perl -ne &#39;print lc&#39;&#xA;javierin.com&lt;/pre&gt;&#xA;&lt;h3&gt;Convertir Mayusculas a Minusculas con PERL&lt;/h3&gt;&#xA;En este ejemplo usaremos la función &lt;strong&gt;print lc&lt;/strong&gt; de perl para convertir la entrada a mayusculas&#xA;&lt;pre class=&#34;wp-block-code&#34;&gt;javi@trabajo:/tmp$ echo &#34;javierin.com&#34; |perl -ne &#39;print uc&#39;&#xA;JAVIERIN.COM&lt;/pre&gt;&#xA;&lt;h2&gt;¿Cual es el metodo más rápido para pasar de mayusculas a minusculas / minusculas a mayusculas?&lt;/h2&gt;&#xA;Pues la respuesta es: &lt;strong&gt;Depende&lt;/strong&gt;&#xA;&lt;h3&gt;Velocidad en pasar strings pequeños de minusculas a mayusculas&lt;/h3&gt;&#xA;Si vas a manejar &lt;strong&gt;bloques pequeños de texto&lt;/strong&gt;, sin duda el más rápido es &lt;strong&gt;bash&lt;/strong&gt;.&#xA;&#xA;TR tarda 14.37 segundos en pasar a mayúsculas el conocido Loren Ipsum 5000 veces. Al ser llamadas a binarios externos, el tiempo real de conversión es 4.6 Segundos.&#xA;&lt;pre class=&#34;wp-block-code&#34;&gt;javi@trabajo:/tmp$ time for i in `seq 1 5000`; do echo &#34;Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.&#34; | tr [[:lower:]] [[:upper:]] &amp;gt; /dev/null; done&#xA;&#xA;real 0m14.374s&#xA;user 0m4.668s&#xA;sys 0m17.414s&lt;/pre&gt;&#xA;Bash tarda solo 0.4 segundos en hacer la transformación 5000 veces.&#xA;&lt;pre class=&#34;wp-block-code&#34;&gt;javi@trabajo:/tmp$ lorenipsum=&#34;Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.&#34;; time for i in `seq 1 5000`; do echo ${lorenipsum^^} &amp;gt; /dev/null; done&#xA;&#xA;real 0m0.396s&#xA;user 0m0.380s&#xA;sys 0m0.014s&lt;/pre&gt;&#xA;AWK por su parte se toma un poco menos de tiempo que TR, 4.3 segundos, aunque el binario parece ser un pelín más pesado de invocar.&#xA;&lt;pre class=&#34;wp-block-code&#34;&gt;javi@trabajo:/tmp$ time for i in `seq 1 5000`; do echo &#34;Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.&#34; | awk &#39;{print toupper ($0)}&#39; &amp;gt; /dev/null; done&#xA;&#xA;real 0m14.460s&#xA;user 0m4.351s&#xA;sys 0m16.959s&lt;/pre&gt;&#xA;Perl tarda 8.6 segundos en hacer 5000 transformaciones de Loren Ipsum a mayúsculas, y además, tarda más que el resto en ser invocado.&#xA;&lt;pre class=&#34;wp-block-code&#34;&gt;javi@trabajo:/tmp$ time for i in `seq 1 5000`; do echo &#34;Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.&#34; | perl -ne &#39;print uc&#39; &amp;gt; /dev/null; done&#xA;&#xA;real 0m19.725s&#xA;user 0m8.685s&#xA;sys 0m20.238s&lt;/pre&gt;&#xA;&lt;span style=&#34;color: #ff0000&#34;&gt;&lt;strong&gt;CUIDADO, porque si tratamos con archivos grandes, la cosa cambia y muchísimo.&lt;/strong&gt;&lt;/span&gt;&#xA;&lt;h3&gt;Velocidad en pasar textos grandes de minusculas a mayusculas&lt;/h3&gt;&#xA;Utilizaremos el Quijote y sus 2.2 Mbytes de texto plano, para hacer la transformación &lt;strong&gt;200 veces&lt;/strong&gt; (&lt;em&gt;salvo en el caso de bash&lt;/em&gt;)&#xA;&#xA;TR sigue siendo el más rápido al convertir a mayúsculas. Esta vez con bastante diferencia.&#xA;&lt;pre class=&#34;wp-block-code&#34;&gt;root@fr1:/tmp/b# time for i in `seq 1 200`; do cat quijote.txt | tr [[:lower:]] [[:upper:]] &amp;gt;&amp;gt; /dev/null; done&#xA;&#xA;real 0m1.609s&#xA;user 0m0.332s&#xA;sys 0m0.900s&lt;/pre&gt;&#xA;BASH se vuelve insufriblemente lento, tardando 2 minutos y 12 segundos en hacer la transformación a mayúsculas &lt;strong&gt;1 vez. &lt;/strong&gt;&#xA;&lt;pre class=&#34;wp-block-code&#34;&gt;root@fr1:/tmp/b# v=$(cat quijote.txt); time echo ${v^^} &amp;gt;&amp;gt; /dev/null&#xA;&#xA;real 2m12.499s&#xA;user 2m12.404s&#xA;sys 0m0.004s&lt;/pre&gt;&#xA;AWK tarda 3 segundos en hacer la transformación 200 veces, el subcampeón de la prueba de conversión a mayúsculas.&#xA;&lt;pre class=&#34;wp-block-code&#34;&gt;root@fr1:/tmp/b# time for i in `seq 1 200`; do cat quijote.txt | awk &#39;{print toupper($0)}&#39; &amp;gt;&amp;gt; /dev/null; done&#xA;&#xA;real 0m4.245s&#xA;user 0m2.964s&#xA;sys 0m0.832s&lt;/pre&gt;&#xA;Perl por su parte se porta bastante bien, mucho mejor que con los strings más cortos, y es un muy digno tercer finalista.&#xA;&lt;pre class=&#34;wp-block-code&#34;&gt;root@fr1:/tmp/b# time for i in `seq 1 200`; do cat quijote.txt | perl -ne &#39;print uc&#39; &amp;gt;&amp;gt; /dev/null; done&#xA;&#xA;real 0m4.716s&#xA;user 0m3.592s&#xA;sys 0m0.748s&lt;/pre&gt;&#xA;Así que como regla de oro, usa bash para pasar de mayusculas a minusculas o para convertir de minúsculas a mayúsculas &lt;strong&gt;SOLO&lt;/strong&gt; si los fragmentos de texto son strings cortas. Si no sabes el tamaño de lo que puedes transformar, o sabes de antemano que vas a convertir textos grandes, te recomiendo que uses tr o awk.&#xA;&#xA;&lt;a href=&#34;http://javierin.com/wp-content/uploads/2015/03/Selection_999002.png&#34;&gt;&lt;img class=&#34;aligncenter size-full wp-image-3309&#34; src=&#34;http://javierin.com/wp-content/uploads/2015/03/Selection_999002.png&#34; alt=&#34;mayusculas a minusculas&#34; width=&#34;323&#34; height=&#34;194&#34; / loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&lt;/a&gt;&#xA;&#xA;&amp;nbsp;&#xA;&#xA;&amp;nbsp;</description>
			</item>
			<item>
				<title>Medir el rendimiento en Linux</title>
				<link>https://javierin.com/medir-el-rendimiento-en-linux/</link>
				<pubDate>Thu, 04 Dec 2014 19:34:44 +0000</pubDate>
				<guid>https://javierin.com/medir-el-rendimiento-en-linux/</guid>
				<description>&lt;h1&gt;Linux Benchmarking &amp;#8211; Medir el rendimiento en Linux&lt;/h1&gt;&#xA;&lt;p&gt;Para medir el rendimiento en linux de un ordenador de sobremesa, portátil o servidor, podemos utilizar diversas herramientas. Desde crear bucles esotéricos en bash hasta hacer pruebas de disco con DD, hdparm, iozone, etc.&lt;/p&gt;&#xA;&lt;p&gt;Existen las denominadas suites que sirven para medir el rendimiento en linux con una serie de aplicaciones reales, simulando su uso mediante herramientas de benchmarking, y que nos proporcionarán unos datos de como se comportaría un equipo para realizar determinada tarea.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Bucles con cat y espacios</title>
				<link>https://javierin.com/bucles-con-cat-y-espacios/</link>
				<pubDate>Thu, 04 Dec 2014 13:56:18 +0000</pubDate>
				<guid>https://javierin.com/bucles-con-cat-y-espacios/</guid>
				<description>En alguna ocasion podemos querer hacer un bucle con for obteniendo los elementos mediante un cat a un archivo. Si alguna vez hemos intentado hacer esto, nos habremos percatado de que si las lineas del archivo contienen un espacio, el cat va a insertas un espacio separando la línea en tantos elementos como palabras separadas por espacios tiene esa línea. Por ejemplo:&#xA;&lt;pre class=&#34;wp-block-code&#34;&gt;javi@casa:/tmp$ for i in $(cat prueba); do echo $i; done&#xA;Primera&#xA;Linea&#xA;Segunda&#xA;Linea&#xA;Tercera&#xA;Linea&lt;/pre&gt;&#xA;Esto no es lo que esperabamos, ya que mi intención era sacar las lineas una a una, pero completas.&#xA;&#xA;Para hacer un bucle de este tipo sin que se nos separen las líneas de forma que se muestre cada palabra en una diferente, debemos cambiar la aproximación y hacer el bucle de otra forma. De esta manera, podemos hacer el siguiente bucle&#xA;&lt;pre class=&#34;wp-block-code&#34;&gt;javi@casa:/tmp$ while read i; do echo &#34;$i&#34;; done &amp;lt; ./prueba&#xA;Primera Linea&#xA;Segunda Linea&#xA;Tercera Linea&lt;/pre&gt;&#xA;De esta sencilla forma podremos iterar con bucles a lo largo de archivos que contienen palabras separadas por espacios sin que se nos rompan todos los esquemas y formato original del archivo y sus líneas.</description>
			</item>
			<item>
				<title>Cortar conexiones establecidas en Linux</title>
				<link>https://javierin.com/cortar-conexiones-establecidas-en-linux/</link>
				<pubDate>Fri, 07 Nov 2014 08:09:48 +0000</pubDate>
				<guid>https://javierin.com/cortar-conexiones-establecidas-en-linux/</guid>
				<description>&lt;p&gt;En alguna ocasión me he encontrado con la necesidad de cortar conexiones establecidas en Linux, dado que no podía reiniciar el servicio y no tenía control sobre el cliente en el otro lado.&lt;/p&gt;&#xA;&lt;p&gt;Existen dos opciones de hacerlo&lt;/p&gt;&#xA;&lt;h1&gt;Cortar conexiones establecidas con iptables&lt;/h1&gt;&#xA;&lt;p&gt;Esta es la opción que suelo utilizar. No es la más elegante, pero funciona en un plazo de 1 minuto aproximadamente.&lt;/p&gt;&#xA;&lt;pre class=&#34;wp-block-code&#34;&gt;root@servidor:~# netstat -na |grep ip_de_cliente&#xA;tcp 0 37 ip_del_servidor:1234 ip_del_cliente:41427 ESTABLISHED&lt;/pre&gt;&#xA;&lt;p&gt;En este caso, pongamos que la ip del cliente es 1.2.3.4. Si queremos cortar la conexion en estado ESTABLISHED que vemos en netstat, aplicaremos la siguiente regla de iptables&lt;/p&gt;</description>
			</item>
			<item>
				<title>¿Cuanta memoria swap pongo a mi equipo?</title>
				<link>https://javierin.com/cuanta-memoria-swap/</link>
				<pubDate>Thu, 07 Aug 2014 17:09:28 +0000</pubDate>
				<guid>https://javierin.com/cuanta-memoria-swap/</guid>
				<description>&lt;p&gt;Hoy he respondido a una duda sobre la cantidad de &lt;strong&gt;memoria swap&lt;/strong&gt; adecuada para un equipo Linux.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://javierin.com/wp-content/uploads/2014/08/Selection_530.png&#34;&gt;&lt;img decoding=&#34;async&#34; class=&#34;aligncenter size-full wp-image-2904&#34; src=&#34;https://javierin.com/wp-content/uploads/2014/08/Selection_530.png&#34; alt=&#34;cuanta memoria swap&#34; width=&#34;336&#34; height=&#34;89&#34; / loading=&#34;lazy&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h1&gt;¿Qué es la memoria Swap?&lt;/h1&gt;&#xA;&lt;p&gt;La memoria swap es una porción de memoria destinada a alojar las páginas de memoria que no caben en la memoria RAM de nuestro equipo. Además, el kernel puede «aparcar» en el swap trozos de memoria ram que se acceden poco frecuentemente a fin de disponer de más memoria RAM para otras aplicaciones que pudieran necesitarla.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Monitorizar LSI SAS2004 / LSI SAS2008</title>
				<link>https://javierin.com/monitorizar-los-discos-con-una-controladora-lsi-sas2004-lsi-sas2008/</link>
				<pubDate>Thu, 20 Feb 2014 19:09:18 +0000</pubDate>
				<guid>https://javierin.com/monitorizar-los-discos-con-una-controladora-lsi-sas2004-lsi-sas2008/</guid>
				<description>&lt;h1&gt;Monitorizar el estado de LSI SAS2004 / LSI SAS2008 con Zabbix&lt;/h1&gt;&#xA;&lt;p&gt;El ultimo servidor dedicado que he contratado trae una controladora LSI SAS2004 / LSI SAS2008.&lt;br /&gt;&#xA;En concreto, esta es su descripción:&lt;/p&gt;&#xA;&lt;pre&gt;root@host:/usr/local/bin# lspci&#xA;...&#xA;01:00.0 Serial Attached SCSI controller: LSI Logic / Symbios Logic SAS2004 PCI-Express Fusion-MPT SAS-2 [Spitfire] (rev 03)&#xA;...&lt;/pre&gt;&#xA;&lt;p&gt;Bien, resulta que esta &lt;a href=&#34;https://www.amazon.es/dp/B01H56NNBE?tag=javierin-21&amp;linkCode=osi&amp;th=1&amp;psc=1&#34; target=&#34;_blank&#34; rel=&#34;nofollow sponsored&#34;&gt;controladora de disco&lt;/a&gt; no responde a MegaCli, así que investigando un poco he visto que todo lo que necesita es la instalación de un par de módulos para poder monitorizarla con smartd y smartctl.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Sacar estadisticas de acceso por user agent con logs de nginx</title>
				<link>https://javierin.com/estadisticas-de-acceso-por-user-agent-en-nginx/</link>
				<pubDate>Mon, 11 Nov 2013 10:04:25 +0000</pubDate>
				<guid>https://javierin.com/estadisticas-de-acceso-por-user-agent-en-nginx/</guid>
				<description>&lt;p&gt;Seguro que a alguien le puede ser util sacar estadisticas de acceso por user agent en nginx para poder clasificar los dispositivos que utilizan sus visitantes.&lt;br /&gt;&#xA;Aunque pueda ser absurdo, saber el user agent de tus visitantes a partir de los logs de nginx te da una visibilidad de que tipo de gente visita tu web, si puedes necesitar una versión web de tu &lt;a href=&#34;https://www.amazon.es/dp/B0C572FQXX?tag=javierin-21&amp;linkCode=osi&amp;th=1&amp;psc=1&#34; target=&#34;_blank&#34; rel=&#34;nofollow sponsored&#34;&gt;sitio web&lt;/a&gt;, etc.&lt;/p&gt;&#xA;&lt;pre&gt;cat nombre-vhost-access.log |awk -F&#34;&#34; &#34;&#34; &#39;NF &amp;gt; 1 { print $(NF - 1); }&#39; |sort |uniq -c |sort -n&lt;/pre&gt;&#xA;&lt;p&gt;Ten presente que si usas un formato personalizado de logs, los números de columna se pueden ver desplazados. En ese caso, para obtener estadisticas de acceso por user agent en nginx deberás adaptar el comando al formato de tus logs.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Borrar la cache DNS</title>
				<link>https://javierin.com/borrar-la-cache-dns/</link>
				<pubDate>Mon, 07 Oct 2013 05:48:48 +0000</pubDate>
				<guid>https://javierin.com/borrar-la-cache-dns/</guid>
				<description>En ocasiones cuando estamos haciendo pruebas gestionando las entradas de un DNS, o algo deja de funcionarnos súbitamente, puede ser de utilidad borrar la cache DNS de nuestro sistema para obligarle a que vuelva a solicitar las resoluciones de los nombres a su servidor DNS. Incluso podemos forzar esta primera resolucion nosotros mismos mediante el uso de nslookup o dig, a elección de cada uno.&#xA;&#xA;La situación típica en la que aplicaríamos esta entrada es cuando cambiamos la ip a la que resuelve un dominio pero no termina de actualizarse porque lo tenemos cacheado en nuestro equipo.&#xA;&#xA;Para borrar la cache DNS en distribuciones linux, debemos saber que método utilizan para cachear las resoluciones de nombres.&#xA;&#xA;&lt;span style=&#34;color: #ff0000&#34;&gt;&lt;strong&gt;2019 - Actualizado&lt;/strong&gt;&lt;/span&gt;&#xA;&#xA;Como ahora en muchas distribuciones es systemd el que lleva un módulo de resolución DNS, la forma de &lt;strong&gt;limpiar la cache dns en Ubuntu 17, Ubuntu 18, Ubuntu 19&lt;/strong&gt; y siguientes sería:&#xA;&lt;pre&gt;sudo systemd-resolve --flush-caches&lt;/pre&gt;&#xA;Podemos ver estadísticas de este módulo systemd resolve mediante el comando systemd-resolve --statistics&#xA;&lt;pre&gt;sudo systemd-resolve --statistics&#xA;[sudo] password for javi:&#xA;DNSSEC supported by current servers: no&#xA;&#xA;Transactions&#xA;Current Transactions: 0&#xA;Total Transactions: 38213&#xA;&#xA;Cache&#xA;Current Cache Size: 83&#xA;Cache Hits: 17463&#xA;Cache Misses: 21359&#xA;&#xA;DNSSEC Verdicts&#xA;Secure: 0&#xA;Insecure: 0&#xA;Bogus: 0&#xA;Indeterminate: 0&lt;/pre&gt;&#xA;Fin de la actualización de 2019. Para limpiar cache DNS en otras distribuciones Linux antiguas, puede que te funcionen los siguientes métodos.&#xA;&#xA;Yo uso Xubuntu, así que este método es el que me funciona para &lt;strong&gt;borrar la cache dns en Ubuntu&lt;/strong&gt;:&#xA;&lt;pre&gt;sudo service dnsmasq restart&lt;/pre&gt;&#xA;En otras distribuciones, puede servir lo siguiente:&#xA;&#xA;&lt;strong&gt;Vaciar la cache DNS en BIND (Named)&lt;/strong&gt;:&#xA;&lt;pre&gt;rndc restart&lt;/pre&gt;&#xA;A partir de la versión 9.3.0 de Bind, podemos limpiar dominios concretos:&#xA;&lt;pre&gt;rndc flushname dominio.tld&lt;/pre&gt;&#xA;&lt;strong&gt;Purgar la cache DNS de nscd&lt;/strong&gt;:&#xA;&lt;pre&gt;service nscd restart&lt;/pre&gt;&#xA;&lt;strong&gt;Limpiar la cache DNS en MacOSX 10.6 y superio&lt;/strong&gt;r:&#xA;&lt;pre&gt;sudo dscacheutil -flushcache&lt;/pre&gt;&#xA;&lt;strong&gt;Limpiar la cache DNS en MacOSX 10.5 e inferior&lt;/strong&gt;:&#xA;&lt;pre&gt;lookupd -flushcache&lt;/pre&gt;&#xA;&lt;strong&gt;Borrar la cache DNS en Windows&lt;/strong&gt;:&#xA;&lt;pre&gt;ipconfig /flushdns&lt;/pre&gt;</description>
			</item>
			<item>
				<title>Chuleta de exim4</title>
				<link>https://javierin.com/chuleta-de-exim4/</link>
				<pubDate>Fri, 04 Oct 2013 05:25:27 +0000</pubDate>
				<guid>https://javierin.com/chuleta-de-exim4/</guid>
				<description>&lt;h2&gt;Chuleta de exim4&lt;/h2&gt;&#xA;&lt;p&gt;Para &lt;strong&gt;contar el numero de mensajes en cola de exim4&lt;/strong&gt; (útil para la monitorización):&lt;/p&gt;&#xA;&lt;pre&gt;exim -bpc&lt;/pre&gt;&#xA;&lt;p&gt;Mostrar el estado de exim (útil para &lt;a href=&#34;https://www.amazon.es/dp/B0C572FQXX?tag=javierin-21&amp;linkCode=osi&amp;th=1&amp;psc=1&#34; target=&#34;_blank&#34; rel=&#34;nofollow sponsored&#34;&gt;monitorizar exim4&lt;/a&gt;):&lt;/p&gt;&#xA;&lt;pre&gt;exiwhat&lt;/pre&gt;&#xA;&lt;p&gt;&lt;strong&gt;Contar el numero de mensajes&lt;/strong&gt; e incluir datos interesantes como origen, tamaño, etc:&lt;/p&gt;&#xA;&lt;pre&gt;exim -bp | exiqsumm&lt;/pre&gt;&#xA;&lt;p&gt;&lt;strong&gt;Mostrar por pantalla la configuración de exim4&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;pre&gt;exim -bP&lt;/pre&gt;&#xA;&lt;h2&gt;Comandos útiles para la gestión de colas en exim4&lt;/h2&gt;&#xA;&lt;p&gt;Si queremos &lt;strong&gt;listar los mensajes encolados en exim4&lt;/strong&gt;, ejecutaremos:&lt;/p&gt;</description>
			</item>
			<item>
				<title>Comandos curiosos en Linux</title>
				<link>https://javierin.com/comandos-curiosos-en-linux/</link>
				<pubDate>Sun, 25 Aug 2013 15:58:37 +0000</pubDate>
				<guid>https://javierin.com/comandos-curiosos-en-linux/</guid>
				<description>&lt;h1&gt;Comandos curiosos en Linux&lt;/h1&gt;&#xA;cal - &lt;strong&gt;Calendario en el terminal / consola&lt;/strong&gt;. Simple y efectivo. Nací un miércoles.&#xA;&lt;pre&gt;javi@musashi:~$ &lt;strong&gt;cal 12 1979&lt;/strong&gt;&#xA;   Diciembre 1979&#xA;do lu ma mi ju vi sá&#xA;                   1&#xA; 2  3  4  5  6  7  8&#xA; 9 10 11 12 13 14 15&#xA;16 17 18 19 20 21 22&#xA;23 24 25 &lt;strong&gt;26&lt;/strong&gt; 27 28 29&#xA;30 31            &lt;/pre&gt;&#xA;&#xA;toilet / figlet - &lt;strong&gt;Crear ASCII art en terminal de linux&lt;/strong&gt;&#xA;&lt;img src=&#34;http://javierin.com/wp-content/uploads/2013/08/Selection_040.png&#34; alt=&#34;ascii art en terminal de linux&#34; width=&#34;1093&#34; height=&#34;183&#34; class=&#34;aligncenter size-full wp-image-2187&#34; / loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;Con ubuntu puedes elegir estos tipos de letra por defecto, que se alojan en /usr/share/figlet:&#xA;ascii12 ascii9 bigascii12 bigascii9 bigmono12 bigmono9 circle emboss2 emboss future letter mono12 mono9 pagga smascii12 smascii9 smblock smbraille smmono12 smmono9 wideterm&#xA;&#xA;&lt;img src=&#34;http://javierin.com/wp-content/uploads/2013/08/Selection_041.png&#34; alt=&#34;ASCII art banner en linux consola&#34; width=&#34;857&#34; height=&#34;188&#34; class=&#34;aligncenter size-full wp-image-2188&#34; / loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;</description>
			</item>
			<item>
				<title>Limitar el ancho de banda en Linux</title>
				<link>https://javierin.com/limitar-el-ancho-de-banda/</link>
				<pubDate>Sun, 25 Aug 2013 15:37:09 +0000</pubDate>
				<guid>https://javierin.com/limitar-el-ancho-de-banda/</guid>
				<description>Para limitar el ancho de banda en linux, para un interfaz de red en concreto, podemos utilizar Wondershaper &lt;strong&gt;como usuario root&lt;/strong&gt;&#xA;&#xA;Este comando nos mostrará la política de limitación que hay aplicada.&#xA;&lt;pre&gt;wondershaper eth0&lt;/pre&gt;&#xA;&#xA;Este comando limpiará el interfaz de políticas y dejará de limitar el ancho de banda.&#xA;&lt;pre&gt;wondershaper clear eth0&lt;/pre&gt;&#xA;&#xA;Este otro comando, definirá los limites en kbits/segundo que vamos a aplicar a la hora de limitar el ancho de banda, primero de descarga y después de envío&#xA;&lt;pre&gt;wondershaper eth0 1024 100&lt;/pre&gt;&#xA;&#xA;Por lo general, no apliques estas politicas en un servidor de produccion sin haber hecho tus pruebas antes. Limitar el ancho de banda supone descartar paquetes, retransmisiones y otros efectos colaterales que podrias no desear en un servidor productivo. Como siempre, repito, haz tus pruebas en un laboratorio o una maquina destinada a tal fin.</description>
			</item>
			<item>
				<title>Medir el ancho de banda en Linux</title>
				<link>https://javierin.com/medir-el-ancho-de-banda-en-linux/</link>
				<pubDate>Sun, 25 Aug 2013 15:32:33 +0000</pubDate>
				<guid>https://javierin.com/medir-el-ancho-de-banda-en-linux/</guid>
				<description>&lt;p&gt;Aquí dejo un listado de diferentes utilidades que se pueden usar para medir el ancho de banda que estamos usando.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;iptraf&lt;/strong&gt;&lt;br /&gt;&#xA;Permite seleccionar interfaces, distingue tráfico TCP, UDP, ICMP. Es bastante completo. Para ir directamente a estadísticas detalladas podemos usar iptraf -d interfaz&lt;br /&gt;&#xA;&lt;img decoding=&#34;async&#34; src=&#34;https://javierin.com/wp-content/uploads/2013/08/Selection_029.png&#34; alt=&#34;Ancho de banda en Linux&#34; width=&#34;929&#34; height=&#34;477&#34; class=&#34;aligncenter size-full wp-image-2167&#34; / loading=&#34;lazy&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;iftop&lt;/strong&gt;&lt;br /&gt;&#xA;Nos desglosa el tráfico por ip, pudiendo ver el acumulado con cada extremo remoto por separado.&lt;br /&gt;&#xA;&lt;img decoding=&#34;async&#34; src=&#34;https://javierin.com/wp-content/uploads/2013/08/Selection_030.png&#34; alt=&#34;Ancho de banda en Linux&#34; width=&#34;932&#34; height=&#34;487&#34; class=&#34;aligncenter size-full wp-image-2168&#34; / loading=&#34;lazy&#34;&gt;&lt;/p&gt;</description>
			</item>
			<item>
				<title>Descargar videos de youtube desde Ubuntu</title>
				<link>https://javierin.com/descargar-videos-de-youtube/</link>
				<pubDate>Sun, 25 Aug 2013 14:35:03 +0000</pubDate>
				<guid>https://javierin.com/descargar-videos-de-youtube/</guid>
				<description>Hay ocasiones en que quieres &lt;strong&gt;descargar videos de youtube&lt;/strong&gt;. En Ubuntu, tenemos una aplicación llamada clive que permite&lt;strong&gt; bajar los vídeos de páginas web a tu ordenador&lt;/strong&gt;. Este tutorial explica detalladamente &lt;strong&gt;como descargar videos de youtube&lt;/strong&gt;, pero puedes utilizar clive con casi cualquier web que use flash para reproducir video, como por ejemplo Vimeo.&#xA;&#xA;Para este tutorial, vamos a tomar como ejemplo el siguiente vídeo de Top Gear BBC&#xA;&lt;div style=&#34;position:relative;padding-bottom:56.25%;height:0;overflow:hidden;margin:1.5rem 0&#34;&gt;&lt;iframe src=&#34;https://www.youtube-nocookie.com/embed/Sp4L7_kmAOg&#34; title=&#34;YouTube&#34; style=&#34;position:absolute;top:0;left:0;width:100%;height:100%;border:0&#34; loading=&#34;lazy&#34; allowfullscreen&gt;&lt;/iframe&gt;&lt;/div&gt;&#xA;&#xA;1. Instálate cclive:&#xA;&lt;pre class=&#34;&#34;&gt;sudo apt-get install cclive&lt;/pre&gt;&#xA;&amp;nbsp;&#xA;&#xA;2. Usa el programa youtube-dl para descargar videos de youtube al ordenador. La anterior solucion que yo proponia en esta entrada ya no funciona correctamente.&#xA;&lt;pre class=&#34;wp-block-code&#34;&gt;javi@trabajo:/tmp$ youtube-dl Sp4L7_kmAOg&#xA;[youtube] Sp4L7_kmAOg: Downloading webpage&#xA;[youtube] Sp4L7_kmAOg: Downloading video info webpage&#xA;[youtube] Sp4L7_kmAOg: Extracting video information&#xA;[youtube] Sp4L7_kmAOg: Downloading MPD manifest&#xA;[download] Destination: Aerial Laser Tag - Extended in Full HD - Top Gear series 19 - BBC-Sp4L7_kmAOg.f137.mp4&#xA;[download] 100% of 186.79MiB in 00:32&#xA;[download] Destination: Aerial Laser Tag - Extended in Full HD - Top Gear series 19 - BBC-Sp4L7_kmAOg.f140.m4a&#xA;[download] 100% of 6.81MiB in 00:01&#xA;[ffmpeg] Merging formats into &#34;Aerial Laser Tag - Extended in Full HD - Top Gear series 19 - BBC-Sp4L7_kmAOg.mp4&#34;&#xA;Deleting original file Aerial Laser Tag - Extended in Full HD - Top Gear series 19 - BBC-Sp4L7_kmAOg.f137.mp4 (pass -k to keep)&#xA;Deleting original file Aerial Laser Tag - Extended in Full HD - Top Gear series 19 - BBC-Sp4L7_kmAOg.f140.m4a (pass -k to keep)&lt;/pre&gt;&#xA;3. Si queremos saber los formatos de video que hay disponibles en youtube para ese clip, usaremos la opcion -F&#xA;&lt;pre class=&#34;wp-block-code&#34;&gt;javi@trabajo:/tmp$ youtube-dl -F Sp4L7_kmAOg&#xA;[youtube] Sp4L7_kmAOg: Downloading webpage&#xA;[youtube] Sp4L7_kmAOg: Downloading video info webpage&#xA;[youtube] Sp4L7_kmAOg: Extracting video information&#xA;[youtube] Sp4L7_kmAOg: Downloading MPD manifest&#xA;[info] Available formats for Sp4L7_kmAOg:&#xA;format code extension resolution note&#xA;171 webm audio only DASH audio 90k , vorbis@128k (44100Hz), 4.53MiB&#xA;140 m4a audio only DASH audio 129k , m4a_dash container, mp4a.40.2@128k (44100Hz), 6.81MiB&#xA;160 mp4 256x144 DASH video 112k , avc1.4d400c, 13fps, video only, 5.83MiB&#xA;242 webm 426x240 DASH video 197k , vp9, 1fps, video only, 8.15MiB&#xA;133 mp4 426x240 DASH video 256k , avc1.4d4015, 25fps, video only, 12.99MiB&#xA;243 webm 640x360 DASH video 376k , vp9, 1fps, video only, 15.45MiB&#xA;134 mp4 640x360 DASH video 614k , avc1.4d401e, 25fps, video only, 22.95MiB&#xA;244 webm 854x480 DASH video 679k , vp9, 1fps, video only, 30.36MiB&#xA;135 mp4 854x480 DASH video 1129k , avc1.4d401e, 25fps, video only, 45.20MiB&#xA;247 webm 1280x720 DASH video 1529k , vp9, 1fps, video only, 61.61MiB&#xA;136 mp4 1280x720 DASH video 2267k , avc1.4d401f, 25fps, video only, 89.19MiB&#xA;248 webm 1920x1080 DASH video 3166k , vp9, 1fps, video only, 105.84MiB&#xA;137 mp4 1920x1080 DASH video 4235k , avc1.640028, 25fps, video only, 186.79MiB&#xA;36 3gp 320x? small , mp4v.20.3, mp4a.40.2&#xA;17 3gp 176x144 small , mp4v.20.3, mp4a.40.2@ 24k&#xA;5 flv 400x240 small , h263, mp3 @ 64k&#xA;43 webm 640x360 medium , vp8.0, vorbis@128k&#xA;18 mp4 640x360 medium , avc1.42001E, mp4a.40.2@ 96k&#xA;22 mp4 1280x720 hd720 , avc1.64001F, mp4a.40.2@192k (best)&lt;/pre&gt;&#xA;A continuacion, si queremos bajarnos la version de 720p en MP4, usaremos -f y el codigo del formato que en este caso es el 136&#xA;&lt;pre class=&#34;wp-block-code&#34;&gt;javi@trabajo:/tmp$ youtube-dl -f136 Sp4L7_kmAOg&#xA;[youtube] Sp4L7_kmAOg: Downloading webpage&#xA;[youtube] Sp4L7_kmAOg: Downloading video info webpage&#xA;[youtube] Sp4L7_kmAOg: Extracting video information&#xA;[youtube] Sp4L7_kmAOg: Downloading MPD manifest&#xA;[download] Aerial Laser Tag - Extended in Full HD - Top Gear series 19 - BBC-Sp4L7_kmAOg.mp4 has already been downloaded&#xA;[download] 100% of 193.65MiB&#xA;javi@trabajo:/tmp$ rm *.mp4&#xA;javi@trabajo:/tmp$ youtube-dl -f136 Sp4L7_kmAOg&#xA;[youtube] Sp4L7_kmAOg: Downloading webpage&#xA;[youtube] Sp4L7_kmAOg: Downloading video info webpage&#xA;[youtube] Sp4L7_kmAOg: Extracting video information&#xA;[youtube] Sp4L7_kmAOg: Downloading MPD manifest&#xA;[download] Destination: Aerial Laser Tag - Extended in Full HD - Top Gear series 19 - BBC-Sp4L7_kmAOg.mp4&#xA;[download] 100% of 89.19MiB in 00:17&lt;/pre&gt;&#xA;&amp;nbsp;&#xA;&#xA;&lt;strong&gt;Tabla con los diferentes formatos de vídeo de Youtube para descargar al ordenador&lt;/strong&gt;:&#xA;&lt;a href=&#34;http://javierin.com/wp-content/uploads/2013/08/Selection_027.png&#34;&gt;&lt;img class=&#34;aligncenter size-full wp-image-2156&#34; src=&#34;http://javierin.com/wp-content/uploads/2013/08/Selection_027.png&#34; alt=&#34;listado formatos descargar video de youtube&#34; width=&#34;1067&#34; height=&#34;621&#34; / loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&lt;/a&gt;&#xA;Esta tabla se mantiene actualizada en esta página de wikipedia:&#xA;&lt;a href=&#34;http://en.wikipedia.org/wiki/YouTube#Quality_and_codecs&#34; target=&#34;_blank&#34;&gt;http://en.wikipedia.org/wiki/YouTube#Quality_and_codecs&lt;/a&gt;</description>
			</item>
			<item>
				<title>Buscar paquetes debian que vengan de un determinado repositorio</title>
				<link>https://javierin.com/buscar-paquetes-debian-que-vengan-de-un-determinado-repositorio/</link>
				<pubDate>Mon, 08 Jul 2013 07:04:04 +0000</pubDate>
				<guid>https://javierin.com/buscar-paquetes-debian-que-vengan-de-un-determinado-repositorio/</guid>
				<description>Si usas repositorios diferentes a los oficiales de debian, puede que algún día necesites saber qué paquetes has instalado que provengan de ellos. Un ejemplo puede ser cuando un repositorio se ve comprometido y necesitas saber el posible impacto en el software que tienes instalado.&#xA;&#xA;Para &lt;strong&gt;localizar que paquetes debian hemos instalado de un repositorio en concreto&lt;/strong&gt;, ejecutaremos:&#xA;&lt;pre&gt;aptitude search &#34;?origin (nombrerepositorio) ?installed&#34;&lt;/pre&gt;&#xA;Por ejemplo:&#xA;&lt;pre&gt;aptitude search &#34;?origin (webupd8team) ?installed&#34;&#xA;i   oracle-java7-installer                                                                                         - Oracle Java(TM) Development Kit (JDK) 7&lt;/pre&gt;</description>
			</item>
			<item>
				<title>Visualizar cabeceras HTTP de un servidor remoto</title>
				<link>https://javierin.com/visualizar-cabeceras-http-de-un-servidor-remoto/</link>
				<pubDate>Sat, 08 Jun 2013 13:11:16 +0000</pubDate>
				<guid>https://javierin.com/visualizar-cabeceras-http-de-un-servidor-remoto/</guid>
				<description>&lt;p&gt;Hoy me ha llamado un amigo preguntándome como saber si una petición que estaba haciendo a un &lt;a href=&#34;https://www.amazon.es/dp/B0CJQG8CWJ?tag=javierin-21&amp;linkCode=osi&amp;th=1&amp;psc=1&#34; target=&#34;_blank&#34; rel=&#34;nofollow sponsored&#34;&gt;servidor&lt;/a&gt; era correcta o no.&lt;/p&gt;&#xA;&lt;p&gt;Lo primero en lo que pensé fue en usar curl, pero luego me quedé pensando en otras formas de hacerlo, desde wget hasta netcat. Sin ir a opciones raras, aquí van 3 formas de obtener las cabeceras HTTP de respuesta:&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Mirar cabeceras HTTP con Curl&lt;/strong&gt; (La primera porque es la que suelo usar) Incluyo la opción de seguir las redirecciones indicadas por el servidor.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Añadir una clave a un dispositivo cifrado LUKS</title>
				<link>https://javierin.com/anadir-una-clave-a-un-dispositivo-cifrado-luks/</link>
				<pubDate>Sat, 08 Jun 2013 12:52:45 +0000</pubDate>
				<guid>https://javierin.com/anadir-una-clave-a-un-dispositivo-cifrado-luks/</guid>
				<description>Para &lt;strong&gt;añadir una clave adicional en un dispositivo cifrado con luks&lt;/strong&gt;, hacemos lo siguiente:&#xA;&#xA;cryptsetup luksAddKey /dev/dispositivo&#xA;&#xA;&#xA;Enter any passphrase:&#xA;Enter new passphrase for key slot:&#xA;Verify passphrase:&#xA;&#xA;&#xA;&lt;strong&gt;Primero nos preguntará la master key&lt;/strong&gt;, y luego ya podremos añadir la nueva clave luks que queramos.</description>
			</item>
			<item>
				<title>Recuperar home cifrado de Ubuntu usando el password de login</title>
				<link>https://javierin.com/recuperar-home-cifrado-de-ubuntu-usando-el-password-de-login/</link>
				<pubDate>Fri, 18 May 2012 08:00:38 +0000</pubDate>
				<guid>https://javierin.com/recuperar-home-cifrado-de-ubuntu-usando-el-password-de-login/</guid>
				<description>A veces puede ocurrir que actualizas tu distribución a una versión más moderna y en el proceso algo se rompe y deja de arrancar. Si tienes tu &lt;strong&gt;home cifrado con ecryptfs&lt;/strong&gt;, puede suponer un buen susto. Para &lt;strong&gt;recuperar el contenido de un home cifrado con ecryptfs&lt;/strong&gt;, puedes hacer lo siguiente (Probado en ubuntu)&#xA;&#xA;1. Arrancar con un livecd&#xA;2. Montar la partición donde tengas tu home. Por ejemplo:&#xA;&lt;pre&gt;mkdir /tmp/particionhome&#xA;mount /dev/XXX /tmp/particionhome&lt;/pre&gt;&#xA;3. Ejecutar un comando que recupera la particion cifrada usando la password de login&#xA;&lt;pre&gt;sudo ecryptfs-recover-private&#xA;[sudo] password for javi:&#xA;INFO: Searching for encrypted private directories (this might take a while)...&#xA;INFO: Found [/home/.ecryptfs/javi/.Private].&#xA;Try to recover this directory? [Y/n]: Y&#xA;INFO: Found your wrapped-passphrase&#xA;Do you know your LOGIN passphrase? [Y/n] Y&#xA;INFO: Enter your LOGIN passphrase...&#xA;Passphrase:&#xA;Inserted auth tok with sig [1f04ff41fe7bc45e] into the user session keyring&#xA;INFO: Success!  Private data mounted read-only at [/tmp/ecryptfs.K7WwW4Oy].&lt;/pre&gt;&#xA;Por fin hemos podido &lt;strong&gt;recuperar el acceso al home encriptado de ubuntu&lt;/strong&gt; desde un livecd (El encriptado es por SEO, yo prefiero cifrado) :)</description>
			</item>
			<item>
				<title>Vaciar buffers y cache de disco en linux</title>
				<link>https://javierin.com/vaciar-buffers-y-cache-de-disco-en-linux/</link>
				<pubDate>Thu, 10 May 2012 13:08:00 +0000</pubDate>
				<guid>https://javierin.com/vaciar-buffers-y-cache-de-disco-en-linux/</guid>
				<description>Hoy he tenido que tirar de google para buscar una forma de &lt;strong&gt;vaciar las caches de disco en linux&lt;/strong&gt;, ya que estaba haciendo pruebas de rendimiento en un disco y no queria que los buffers de linux afectasen a los resultados.&#xA;&#xA;Para &lt;strong&gt;el buffer de disco de linux&lt;/strong&gt; haremos como root:&#xA;&lt;pre&gt;sync; echo 3 &amp;gt; /proc/sys/vm/drop_caches&lt;/pre&gt;</description>
			</item>
			<item>
				<title>Medir la velocidad del disco duro en Linux</title>
				<link>https://javierin.com/medir-la-velocidad-del-disco-duro-en-linux/</link>
				<pubDate>Thu, 10 May 2012 12:59:57 +0000</pubDate>
				<guid>https://javierin.com/medir-la-velocidad-del-disco-duro-en-linux/</guid>
				<description>&lt;p&gt;Existen varias opciones para &lt;strong&gt;medir la velocidad del disco en lectura, escritura, acceso de un &lt;a href=&#34;https://www.amazon.es/dp/B0CFBF7SV8?tag=javierin-21&amp;linkCode=osi&amp;th=1&amp;psc=1&#34; target=&#34;_blank&#34; rel=&#34;nofollow sponsored&#34;&gt;disco duro&lt;/a&gt; en linux&lt;/strong&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Estan los programas bonnie++, seeker_baryluk, hdparm.&lt;/p&gt;&#xA;&lt;p&gt;Yo alguna vez he tenido que hacer &lt;strong&gt;pruebas para diagnosticar discos o controladoras con problemas&lt;/strong&gt; (de configuracion sobre todo) y uso lo siguiente para efectuar baterías de tests vaciando los buffers de disco de linux entre ellas:&lt;/p&gt;&#xA;&lt;p&gt;(como root para tener permisos para vaciar los buffers de disco)&lt;/p&gt;</description>
			</item>
			<item>
				<title>Utilizar hpacucli (Herramienta para controladoras StorageArray de HP) con Ubuntu Server 11.10 y kernels 3.x</title>
				<link>https://javierin.com/utilizar-hpacucli-herramienta-para-controladoras-storagearray-de-hp-con-ubuntu-server-11-10-y-kernels-3-x/</link>
				<pubDate>Tue, 14 Feb 2012 13:55:02 +0000</pubDate>
				<guid>https://javierin.com/utilizar-hpacucli-herramienta-para-controladoras-storagearray-de-hp-con-ubuntu-server-11-10-y-kernels-3-x/</guid>
				<description>&lt;p&gt;Hoy, instalando un servidor nuevo, me he encontrado con que no era posible utilizar &lt;strong&gt;hpacucli&lt;/strong&gt; (La herramienta para manejar las &lt;a href=&#34;https://www.amazon.es/dp/B0BN67YW25?tag=javierin-21&amp;linkCode=osi&amp;th=1&amp;psc=1&#34; target=&#34;_blank&#34; rel=&#34;nofollow sponsored&#34;&gt;controladoras HP Smart Array&lt;/a&gt;) desde&lt;strong&gt; Ubuntu Server 11.10,&lt;/strong&gt; que viene con &lt;strong&gt;Kernel 3.0&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;h3&gt;Esta entrada es también valida para usar hpacucli con debian squeeze (con un kernel actualizado a 3.2)&lt;/h3&gt;&#xA;&lt;p&gt;Cada vez que le enviaba un comando, me respondía lo siguiente:&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Error: No controllers detected.&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Aqui pongo el proceso completo para utilizarlo:&lt;/p&gt;</description>
			</item>
			<item>
				<title>Forzar LFTP para que no intente conectar por TLS</title>
				<link>https://javierin.com/forzar-lftp-para-que-no-intente-conectar-por-tls/</link>
				<pubDate>Tue, 03 Jan 2012 14:29:31 +0000</pubDate>
				<guid>https://javierin.com/forzar-lftp-para-que-no-intente-conectar-por-tls/</guid>
				<description>&lt;p&gt;Cuando tenemos un &lt;a href=&#34;https://www.amazon.es/dp/B0CJQG8CWJ?tag=javierin-21&amp;linkCode=osi&amp;th=1&amp;psc=1&#34; target=&#34;_blank&#34; rel=&#34;nofollow sponsored&#34;&gt;servidor FTP&lt;/a&gt; con TLS, normalmente le instalamos un certificado autofirmado. Estos certificados no le gustan a LFTP y nos devuelve un error:&lt;br /&gt;&#xA;&lt;code&gt;ls: Fatal error: Certificate verification: Not trusted&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;Podemos desactivar la verificacion de los certificados ssl añadiendo lo siguiente al archivo de opciones de LFTP (~/.lftp/rc)&lt;br /&gt;&#xA;&lt;code&gt;set ssl:verify-certificate off&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;Otra opcion menos elegante es directamente cargarnos el soporte ssl para que no se tire directamente a por el TLS una vez lo detecta como disponible:&lt;br /&gt;&#xA;&lt;code&gt;set ftp:ssl-allow false&lt;/code&gt;&lt;/p&gt;</description>
			</item>
			<item>
				<title>Timeouts SSH - Keepalive SSH para el cliente o el servidor</title>
				<link>https://javierin.com/keepalive-ssh/</link>
				<pubDate>Tue, 13 Dec 2011 22:47:30 +0000</pubDate>
				<guid>https://javierin.com/keepalive-ssh/</guid>
				<description>&lt;p&gt;Cada vez que me pongo a trabajar en un ordenador que no es el mio, me encuentro con el problema de las sesiones ssh que dan timeout. Para resolver esto, a veces sirve con abrir un screen, aunque no soy muy amigo de tener screen en &lt;a href=&#34;https://www.amazon.es/dp/B0CJQG8CWJ?tag=javierin-21&amp;linkCode=osi&amp;th=1&amp;psc=1&#34; target=&#34;_blank&#34; rel=&#34;nofollow sponsored&#34;&gt;servidores de producción&lt;/a&gt;, así que una forma facil de conseguir estabilidad es añadir un &lt;strong&gt;keepalive SSH&lt;/strong&gt;. Para ello podemos optar por solucionarlo en el lado del servidor o en el lado del cliente. La ventaja de configurarlo en el lado del cliente es que no hay que hacer cambios en la configuración del servidor. Por otra parte, esto puede no funcionar en todos los escenarios. Si lo cambiamos en el lado del servidor, se aplicará a todos los clientes que se conecten. Implementar el &lt;strong&gt;keepalive ssh&lt;/strong&gt; en el lado cliente o servidor será una decisión tuya 100%.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Hacer rsync a un puerto que no es el estándar SSH</title>
				<link>https://javierin.com/hacer-rsync-a-un-puerto-que-no-es-el-estandar-ssh/</link>
				<pubDate>Wed, 20 Apr 2011 15:00:58 +0000</pubDate>
				<guid>https://javierin.com/hacer-rsync-a-un-puerto-que-no-es-el-estandar-ssh/</guid>
				<description>Intentando copiar datos de un servidor a otro, me encontré con que nunca había hecho rsync a puertos remotos distintos al estándar, así que me puse a buscar y me costó un rato encontrar la solución:&#xA;&#xA;rsync -avz -e &#34;ssh -p XXXX&#34; /ruta/origen/ usuario@hostremoto:/ruta/que/sea/</description>
			</item>
			<item>
				<title>Crear una particion de datos cifrada en Ubuntu con RAID-Software</title>
				<link>https://javierin.com/crear-una-particion-de-datos-cifrada-en-ubuntu-con-raid-software/</link>
				<pubDate>Wed, 20 Apr 2011 14:37:16 +0000</pubDate>
				<guid>https://javierin.com/crear-una-particion-de-datos-cifrada-en-ubuntu-con-raid-software/</guid>
				<description>&lt;p&gt;Estos dias he tenido que montar una máquina con RAID 0 software en dos de sus particiones y cuyo contenido por confidencialidad ha de ir cifrado&lt;/p&gt;&#xA;&lt;p&gt;Primero comprobamos los raids que hay en el sistema (Partimos de un raid1 configurado)&lt;/p&gt;&#xA;&lt;pre&gt;cat /proc/mdstat&#xA;Personalities : [raid1] [raid0] [linear] [multipath] [raid6] [raid5] [raid4] [raid10]&#xA;&#xA;md1 : active raid1 sda1[0] sdb1[1]&#xA;      51198912 blocks [2/2] [UU]&#xA;&#xA;unused devices:&lt;/pre&gt;&#xA;&lt;p&gt;Aqui podemos ver que existe un raid1 en estado optimo.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Liberar espacio en disco duro en Linux</title>
				<link>https://javierin.com/liberar-espacio-en-disco-duro-en-linux/</link>
				<pubDate>Wed, 20 Apr 2011 14:27:53 +0000</pubDate>
				<guid>https://javierin.com/liberar-espacio-en-disco-duro-en-linux/</guid>
				<description>&lt;p&gt;Los sistemas de archivos como pueden ser ext3 o ext4 reservan una cantidad de bloques (5% por defecto) para el usuario root. En particiones grandes esto puede suponer hasta 150GB en el caso de los actuales &lt;a href=&#34;https://www.amazon.es/dp/B0DR92J44C?tag=javierin-21&amp;linkCode=osi&amp;th=1&amp;psc=1&#34; target=&#34;_blank&#34; rel=&#34;nofollow sponsored&#34;&gt;discos de 3TB&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Si queremos reducir la cantidad de bloques reservados por el sistema, podemos hacer:&lt;/p&gt;&#xA;&lt;pre&gt;sudo tune2fs -m 1 /dev/sdXn&lt;/pre&gt;&#xA;&lt;p&gt;donde X es la letra que identifica el dispositivo y n el número de la partición&lt;/p&gt;</description>
			</item>
			<item>
				<title>Varnish Cache 2.1.5 en Ubuntu Server</title>
				<link>https://javierin.com/varnish-cache-2-1-5-en-ubuntu-server/</link>
				<pubDate>Wed, 13 Apr 2011 13:32:46 +0000</pubDate>
				<guid>https://javierin.com/varnish-cache-2-1-5-en-ubuntu-server/</guid>
				<description>&lt;p&gt;Para instalar Varnish Cache en &lt;a href=&#34;https://www.amazon.es/dp/B0BZVCMMT7?tag=javierin-21&amp;linkCode=osi&amp;th=1&amp;psc=1&#34; target=&#34;_blank&#34; rel=&#34;nofollow sponsored&#34;&gt;tu servidor ubuntu&lt;/a&gt;, puedes instalarlo directamente usando apt-get install varnish, pero es posible que no esté disponible la versión más moderna. Si quieres usar los repositorios de Varnish en vez de los de ubuntu, sigue esta guía.&lt;/p&gt;&#xA;&lt;p&gt;Tener instalado el paquete curl. Si no lo tienes, deberas instalarlo tambien&lt;/p&gt;&#xA;&lt;pre&gt;curl http://repo.varnish-cache.org/debian/GPG-key.txt | apt-key add -&lt;/pre&gt;&#xA;&lt;p&gt;Añadir esta linea al final de tu /etc/apt/sources.list (Varnish solo da repositorios para versiones LTS de Ubuntu, pero están actualizadas.)&lt;/p&gt;</description>
			</item>
			<item>
				<title>Alertas con Supervisord</title>
				<link>https://javierin.com/alertas-con-supervisord/</link>
				<pubDate>Wed, 13 Apr 2011 08:49:11 +0000</pubDate>
				<guid>https://javierin.com/alertas-con-supervisord/</guid>
				<description>Ya hablé hace tiempo de &lt;strong&gt;supervisord&lt;/strong&gt; y como puede ayudarnos a gestionar programas que deben estar en ejecución y relanzarlos en caso de que tengan algun crash inesperado. Sin embargo, hay una funcionalidad de la que no habé en su momento, y es la posibilidad de &lt;strong&gt;recibir alertas cuando supervisord reinicia los servicios&lt;/strong&gt; de forma automática.&#xA;&#xA;Esto puede sernos util para detectar problemas con estos servicios que de otra forma pasarían inadvertidos.&#xA;&#xA;Si tenemos servicios en supervisord y se reinician una vez a la semana, o incluso cada día, es posible que no nos lleguemos ni a enterar, dependiendo de la naturaleza de los mismos. Sin embargo, si recibimos un correo cada vez que son reiniciados o que fallan, y descubrimos un patrón por el cual cada dia a las 4:10 de la madrugada se reinicia, lo mismo nos pica la curiosidad por investigar qué está causando los problemas.&#xA;&#xA;Lo primero que debemos hacer es instalarnos el paquete python-setuptools si no lo tenemos ya&#xA;&lt;pre&gt;# apt-get install python-setuptools&lt;/pre&gt;&#xA;Despues, deberemos usar una de las herramientas de este paquete, easy_install, para bajarnos y configurar de forma automática un paquete denominado superlance&#xA;&lt;pre&gt;# easy_install superlance&lt;/pre&gt;&#xA;Ahora ya tenemos instalado el paquete que nos &lt;strong&gt;alerta cuando supervisord reinicia un servicio&lt;/strong&gt;, solo tenemos que editar &lt;em&gt;/etc/supervisor/supervisord.conf&lt;/em&gt; y añadir lo siguiente al final:&#xA;&lt;pre&gt;[eventlistener:crashmail]&#xA;command=/usr/local/bin/crashmail -p nombreprograma -p grupo:otroejemplodenombreprograma  -m tuusuario@tucorreo.tld&#xA;events=PROCESS_STATE&#xA;&lt;/pre&gt;</description>
			</item>
			<item>
				<title>Envio de correo con Amazon Simple Email Services (AWS SES) y Postfix</title>
				<link>https://javierin.com/envio-de-correo-con-amazon-simple-email-services-aws-ses-y-postfix/</link>
				<pubDate>Wed, 23 Mar 2011 11:21:00 +0000</pubDate>
				<guid>https://javierin.com/envio-de-correo-con-amazon-simple-email-services-aws-ses-y-postfix/</guid>
				<description>Para &lt;strong&gt;enviar correo desde una instancia de Amazon&lt;/strong&gt;, una opción es contratar &lt;strong&gt;Amazon Simple Email Services (SES)&lt;/strong&gt;. Para utilizar esta plataforma, debemos realizar una serie de cambios en nuestro equipo y solicitar verificación de los emails que originan los mensajes. Vamos a ello.&#xA;&#xA;Lo primero que debemos hacer es &lt;a href=&#34;http://aws.amazon.com/developertools/Amazon-SES/8945574369528337/187-3651406-8440538&#34;&gt;&lt;strong&gt;bajar los scripts de Amazon SES&lt;/strong&gt;&lt;/a&gt; (url externa de Amazon)&#xA;&#xA;Una vez los tengamos en nuestra máquina, debemos descomprimirlos en un directorio, por ejemplo &lt;em&gt;/usr/local/bin&lt;/em&gt;&#xA;&#xA;Despues deberemos logarnos en nuestra cuenta de Amazon AWS (http://aws.amazon.com/es/account/) y procederemos a ir al enlace que pone Account arriba del todo.&#xA;Una vez hecho esto, haremos click en el apartado &lt;strong&gt;Credenciales de seguridad&lt;/strong&gt;, que nos llevará a una página en la que disponemos de acceso a las claves de usuario propias de la API de amazon. Buscamos el apartado &#34;Credenciales de Seguridad&#34; de nuevo, y veremos 3 pestañas:&#xA;&#xA;- Claves de Acceso&#xA;- Credenciales X.509&#xA;- Pares de Claves&#xA;&#xA;La que nos interesa es la primera, claves de acceso. Vamos a crear un archivo en nuestra instancia AWS llamado, por ejemplo &lt;em&gt;/etc/acceso-api-aws&lt;/em&gt; y dentro pondremos:&#xA;&lt;pre&gt;&lt;strong&gt;AWSAccessKeyId&lt;/strong&gt;=ID de clave de acceso &amp;lt;- Esta la tenemos visible en la web en donde he indicado&#xA;&lt;strong&gt;AWSSecretKey&lt;/strong&gt;=Clave de acceso secreta &amp;lt;- Esta la obtenemos al lado de ese panel, donde pone &#34;pulsar para mostrar&#34;&#xA;&lt;/pre&gt;&#xA;Una vez tenemos el archivo en su sitio, haremos que perteneza a un usuario sin privilegios y le daremos acceso de lectura para este usuario&#xA;&lt;pre&gt;chown usuariosinpriv:usuariosinpriv /etc/acceso-api-aws&#xA;chmod 400 /etc/acceso-api-aws&lt;/pre&gt;&#xA;Para poder usar el servicio de envío de correo de Amazon, necesitamos dar de alta los remitentes de los correos. En mi caso suelo necesitar enviar correos desde una dirección tipo webmaster@dominio.tld, así que iremos a ello&#xA;&#xA;&lt;strong&gt;Dar de alta un remitente en Amazon SES&lt;/strong&gt;&#xA;Recordemos en que ruta teníamos los scripts de Amazon SES y ejecutaremos lo siguiente:&#xA;&lt;pre&gt;ses-verify-email-address.pl -k /etc/acceso-api-aws -v usuario@dominio.tld&lt;/pre&gt;&#xA;Yo en usuario@dominio.tld pongo normalmente webmaster@dominio.loquesea, ya que es como envío los emails desde las webs.&#xA;El proceso de verificación tiene dos partes: La solicitud que acabamos de cursar y la verificación de el email. Nos enviarán desde Amazon SES un email con un link que deberemos pulsar para validar el remitente.&#xA;&#xA;El siguiente paso será modificar parte de la configuración de postfix para poder &lt;strong&gt;usar Amazon SES como servicio SMTP&lt;/strong&gt;. En &lt;em&gt;/etc/postfix/master.cf&lt;/em&gt;, añadiremos estas dos lineas:&#xA;&lt;pre&gt;aws-email  unix  -       n       n       -       -       pipe&#xA;[2espacios]flags=R user=&lt;strong&gt;USUARIOSINPRIVS&lt;/strong&gt; argv=/usr/local/bin/ses-send-email.pl -r -k /etc/acceso-api-aws -e https://email.us-east-1.amazonaws.com -f ${sender} ${recipient}&lt;/pre&gt;&#xA;Debemos cambiar el &lt;strong&gt;USUARIOSINPRIVS &lt;/strong&gt;que está en negrita por el que hemos usado anteriormente para el archivo de las credenciales. También hay que tener &lt;strong&gt;MUY PRESENTE&lt;/strong&gt; que delante de &#34;flags&#34; hay 2 espacios!!! (sustituir [2 espacios] por 2 espacios reales)&#xA;&#xA;Ahora tenemos un problema. El servidor web nos generará (yo uso ubuntu o debian) los &lt;strong&gt;emails con remitente www-data&lt;/strong&gt;. Este remitente no es válido para AWS, porque hemos dado de alta webmaster@dominio en vez de www-data@dominio, con lo que vamos a hacer un poco de &lt;strong&gt;address rewriting en Postfix&lt;/strong&gt; para poder &lt;strong&gt;cambiar el email de origen de www-data&lt;/strong&gt; a lo que necesitamos.&#xA;&#xA;Crearemos un archivo &lt;em&gt;/etc/postfix/canonical&lt;/em&gt; y dentro meteremos la siguiente línea:&#xA;&lt;pre&gt;www-data webmaster@javierin.com&lt;/pre&gt;&#xA;Ahora editamos /etc/postfix/main.conf y agregamos esta línea:&#xA;&lt;pre&gt;canonical_maps = hash:/etc/postfix/canonical&lt;/pre&gt;&#xA;Finalmente ejecutamos&#xA;&lt;pre&gt;postmap /etc/postfix/canonical&lt;/pre&gt;&#xA;y reiniciamos postfix con&#xA;&lt;pre&gt;service postfix reload&lt;/pre&gt;&#xA;Con esto, si hemos seguido los pasos bien, deberíamos tener una &lt;strong&gt;instancia en Amazon capaz de enviar emails usando Amazon SES usando Postfix&lt;/strong&gt;.</description>
			</item>
			<item>
				<title>IPTables resistente a reinicios</title>
				<link>https://javierin.com/iptables-resistente-a-reinicios/</link>
				<pubDate>Thu, 17 Mar 2011 16:18:19 +0000</pubDate>
				<guid>https://javierin.com/iptables-resistente-a-reinicios/</guid>
				<description>&lt;p&gt;Una pregunta que me encuentro a menudo en foros es ¿Como hacer que ipables permanezca activo tras un reinicio? o ¿Como hacer iptables persistente a reboots?&lt;/p&gt;&#xA;&lt;p&gt;Partimos de la base de que tenemos un archivo con reglas de iptables en un sitio. Para volcar las reglas de iptables a un archivo, podemos usar iptables-save y de igual modo, para recuperarlas de un archivo y ponerlas en funcionamiento, iptables-restore.&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;iptables-save &amp;gt; /etc/iptables.rules&lt;br /&gt;&#xA;iptables-restore &amp;lt; /etc/iptables.rules&lt;/code&gt;&lt;/p&gt;</description>
			</item>
			<item>
				<title>Postfix con relay SMTP con autenticacion</title>
				<link>https://javierin.com/postfix-con-relay-smtp-con-autenticacion/</link>
				<pubDate>Wed, 02 Mar 2011 10:51:58 +0000</pubDate>
				<guid>https://javierin.com/postfix-con-relay-smtp-con-autenticacion/</guid>
				<description>&lt;p&gt;Aquí traigo un breve tutorial de algo que he tenido que montar hace un ratito y que viene bien tener a mano. Un &lt;strong&gt;Postfix con relay SMTP con autenticacion auth plain&lt;/strong&gt;. Esto nos permitirá utilizar un &lt;a href=&#34;https://www.amazon.es/dp/B0CJQG8CWJ?tag=javierin-21&amp;linkCode=osi&amp;th=1&amp;psc=1&#34; target=&#34;_blank&#34; rel=&#34;nofollow sponsored&#34;&gt;servidor smtp externo&lt;/a&gt; (un servicio de pago o el que nos proporcione nuestro proveedor de servicios) para enviar los correos y gestionar los mensajes diferidos y reintentos, así como poder evitar problemas de listas RBL en caso de que tengamos una ip donámica, por ejemplo.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Problemas de permisos con Samba y Windows</title>
				<link>https://javierin.com/compartir-carpetas-en-ubunt/</link>
				<pubDate>Mon, 10 Jan 2011 14:34:35 +0000</pubDate>
				<guid>https://javierin.com/compartir-carpetas-en-ubunt/</guid>
				<description>&lt;p&gt;&lt;strong&gt;Intento acceder con mi usuario a una carpeta compartida en samba y me dice que no tengo permisos.&lt;/strong&gt;&lt;br /&gt;&#xA;Los logs reflejan mensajes similares a:&lt;br /&gt;&#xA;process_usershare_file: stat of /var/lib/samba/usershares/nombrecarpeta failed. Permission denied&lt;/p&gt;&#xA;&lt;p&gt;Damos por hecho que tenemos bien configurada la &lt;strong&gt;carpeta compartida en &lt;a href=&#34;https://www.amazon.es/dp/B0BZVCMMT7?tag=javierin-21&amp;linkCode=osi&amp;th=1&amp;psc=1&#34; target=&#34;_blank&#34; rel=&#34;nofollow sponsored&#34;&gt;Ubuntu&lt;/a&gt;&lt;/strong&gt;. Hoy en día, en Ubuntu Desktop es cuestion de botón derecho, compartir.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Solución&lt;/strong&gt;: Aunque en /etc/passwd el usuario exista, Samba (El sistema que usa Ubuntu para compartir las carpetas con Windows) tiene su propia base de datos de usuarios. Abriremos un terminal y ejecutaremos:&lt;br /&gt;&#xA;&lt;code&gt;sudo smbpasswd -a nombreusuario&lt;/code&gt;&lt;br /&gt;&#xA;Y nos pedirá que escribamos (y confirmemos) la contraseña para dicho usuario.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Saber que proceso utiliza un puerto en Linux</title>
				<link>https://javierin.com/saber-que-programa-utiliza-un-puerto-en-linux/</link>
				<pubDate>Thu, 09 Dec 2010 18:18:17 +0000</pubDate>
				<guid>https://javierin.com/saber-que-programa-utiliza-un-puerto-en-linux/</guid>
				<description>&lt;p&gt;Muchas veces nos encontramos con que en nuestra máquina tenemos escuchando un puerto y no sabemos que proceso o programa lo ha abierto. Aunque existen varias maneras sencillas saber que proceso utiliza un puerto, aquí voy a proponer 2 distintas:&lt;/p&gt;&#xA;&lt;pre&gt;netstat -punlt |grep &#39;:X&#39;&lt;/pre&gt;&#xA;&lt;p&gt;donde XX es el número de puerto que buscamos. Probemos con el 22, para el &lt;a href=&#34;https://www.amazon.es/dp/B0BZVCMMT7?tag=javierin-21&amp;linkCode=osi&amp;th=1&amp;psc=1&#34; target=&#34;_blank&#34; rel=&#34;nofollow sponsored&#34;&gt;servidor de SSH&lt;/a&gt;:&lt;/p&gt;&#xA;&lt;pre&gt;root@hostname:~# netstat -puntl |grep &#39;:22&#39;&#xA;tcp        0      0 0.0.0.0:22           0.0.0.0:*               LISTEN      1265/sshd&lt;/pre&gt;&#xA;&lt;p&gt;Podemos ver que el proceso sshd, con PID 1265 es el que tiene abierto el puerto tcp/22&lt;/p&gt;</description>
			</item>
			<item>
				<title>Como saber que proceso se esta comiendo la memoria de nuestro linux</title>
				<link>https://javierin.com/memoria-ram-usada-por-un-proceso-en-linux/</link>
				<pubDate>Thu, 09 Dec 2010 17:08:43 +0000</pubDate>
				<guid>https://javierin.com/memoria-ram-usada-por-un-proceso-en-linux/</guid>
				<description>&lt;p&gt;Tengo un compañero que de vez en cuando se le dispara un proceso y empieza a usar un montón de memoria. La memoria de una máquina, ya sea Windows, Linux o lo que sea, es importante, porque cuando se acaba swapeamos, y cuando swapeamos por &lt;a href=&#34;https://www.amazon.es/dp/B08C511GQH?tag=javierin-21&amp;linkCode=osi&amp;th=1&amp;psc=1&#34; target=&#34;_blank&#34; rel=&#34;nofollow sponsored&#34;&gt;falta de memoria&lt;/a&gt;, tenemos un serio problema.&lt;/p&gt;&#xA;&lt;p&gt;Para poder ver que procesos estan usando más memoria en nuestro linux, escribiremos en un terminal:&lt;/p&gt;&#xA;&lt;pre&gt;ps aux | awk &#39;{print $2, $4, $11}&#39; | sort -k2r | head -n 10&lt;/pre&gt;&#xA;&lt;p&gt;Con esto nos sacará ordenados por porcentaje de utilización los 10 procesos que más RAM están consumiendo en nuestro linux.&lt;br /&gt;&#xA;Un ejemplo:&lt;/p&gt;</description>
			</item>
			<item>
				<title>Plugin para Nagios que ignora la cache de memoria (check_mem)</title>
				<link>https://javierin.com/plugin-para-nagios-que-ignora-la-cache-de-memoria-check_mem/</link>
				<pubDate>Wed, 29 Sep 2010 05:43:52 +0000</pubDate>
				<guid>https://javierin.com/plugin-para-nagios-que-ignora-la-cache-de-memoria-check_mem/</guid>
				<description>&lt;p&gt;Me he encontrado con que tengo que controlar &lt;a href=&#34;https://www.amazon.es/dp/B0CJQG8CWJ?tag=javierin-21&amp;linkCode=osi&amp;th=1&amp;psc=1&#34; target=&#34;_blank&#34; rel=&#34;nofollow sponsored&#34;&gt;un servidor&lt;/a&gt; en el que a veces se dispara el uso de memoria, sin embargo solo me interesa controlar el uso real de memoria por las aplicaciones y no las caches de disco. Me he encontrado con un &lt;a href=&#34;http://blog.vergiss-blackjack.de/2010/04/nagios-plugin-to-check-memory-consumption/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;plugin de Georg M. Sorst&lt;/a&gt; que lo hace, pero no reportaba bien el estado, asi que lo he modificado un poco y aqui lo dejo:&lt;/p&gt;</description>
			</item>
			<item>
				<title>Error en Nagios: Could not stat() command file &#39;/var/lib/nagios3/rw/nagios.cmd&#39;!</title>
				<link>https://javierin.com/error-en-nagios-could-not-stat-command-file-varlibnagios3rwnagios-cmd/</link>
				<pubDate>Tue, 28 Sep 2010 20:35:59 +0000</pubDate>
				<guid>https://javierin.com/error-en-nagios-could-not-stat-command-file-varlibnagios3rwnagios-cmd/</guid>
				<description>&lt;p&gt;Si nos aparece este error al intentar pasar un comando externo a nagios desde la interfaz web &lt;code&gt;Could not stat() command file &#39;/var/lib/nagios3/rw/nagios.cmd&#39;!&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;En un &lt;a href=&#34;https://www.amazon.es/dp/B0BZVCMMT7?tag=javierin-21&amp;linkCode=osi&amp;th=1&amp;psc=1&#34; target=&#34;_blank&#34; rel=&#34;nofollow sponsored&#34;&gt;servidor debian&lt;/a&gt; hay que ejecutar lo siguiente:&lt;br /&gt;&#xA;&lt;code&gt;chmod g+x /var/lib/nagios3/rw&lt;br /&gt;&#xA;dpkg-statoverride --update --add nagios www-data 2710 /var/lib/nagios3/rw&lt;br /&gt;&#xA;dpkg-statoverride --update --add nagios nagios 751 /var/lib/nagios3&lt;/code&gt;&lt;/p&gt;&#xA;&#xA;&lt;p&gt;&lt;small&gt;Este articulo puede contener enlaces de afiliación&lt;/small&gt;&lt;/p&gt;</description>
			</item>
			<item>
				<title>Error en NginX &#34;could not build the server_names_hash, you should increase server_names_hash_bucket_size&#34;</title>
				<link>https://javierin.com/error-en-nginx-server_names_hash-server_names_hash_bucket_size/</link>
				<pubDate>Tue, 28 Sep 2010 12:10:54 +0000</pubDate>
				<guid>https://javierin.com/error-en-nginx-server_names_hash-server_names_hash_bucket_size/</guid>
				<description>A veces puede ocurrir cuando ponemos muchos servidores en un NginX que nos saque este error:&#xA;&#xA;&lt;code&gt;[emerg] 12299#0: could not build the server_names_hash, you should increase server_names_hash_bucket_size: 128&#xA;[emerg] 12299#0: the configuration file /etc/nginx/nginx.conf test failed&lt;/code&gt;&#xA;&#xA;Este parametro ha de ser siempre un multiplo del tamaño de cache del procesador (core). El propio error te indica cuanto poner. En mi caso yo puse 128. Esta variable va en /etc/nginx/nginx.conf</description>
			</item>
			<item>
				<title>Balanceo de carga usando NginX</title>
				<link>https://javierin.com/balanceo-de-carga-usando-nginx/</link>
				<pubDate>Tue, 28 Sep 2010 11:56:50 +0000</pubDate>
				<guid>https://javierin.com/balanceo-de-carga-usando-nginx/</guid>
				<description>&lt;p&gt;Nginx permite balancear la carga entre &lt;a href=&#34;https://www.amazon.es/dp/B0C572FQXX?tag=javierin-21&amp;linkCode=osi&amp;th=1&amp;psc=1&#34; target=&#34;_blank&#34; rel=&#34;nofollow sponsored&#34;&gt;distintos servidores backend&lt;/a&gt; cuando esta funcionando en modo proxy. Aqui pongo una &lt;strong&gt;configuracion de proxy para nginx&lt;/strong&gt; que pueden ser utiles para tener a &lt;strong&gt;nginx como balanceador&lt;/strong&gt;:&lt;/p&gt;&#xA;&lt;pre&gt;upstream &lt;span style=&#34;color: #008000&#34;&gt;servidores&lt;/span&gt;  {&#xA;  server &lt;span style=&#34;color: #ff0000&#34;&gt;127.0.0.1&lt;/span&gt; weight=5 max_fails=2 fail_timeout=10s;&#xA;  server &lt;span style=&#34;color: #ff0000&#34;&gt;127.0.0.1:80&lt;/span&gt; weight=5 max_fails=2 fail_timeout=10s;&#xA;  server &lt;span style=&#34;color: #ff0000&#34;&gt;localhost:80&lt;/span&gt; weight=5 max_fails=2 fail_timeout=10s;&#xA;}&#xA;&#xA;server {&#xA;  server_name &lt;span style=&#34;color: #ff0000&#34;&gt;www.tudominio.tld otrohost.tudominio.tld otrodominio.tld&lt;/span&gt;;&#xA;  location / {&#xA;    proxy_set_header Host $host;&#xA;    proxy_set_header X-Real-IP $remote_addr;&#xA;    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;&#xA;    proxy_pass  http://&lt;span style=&#34;color: #008000&#34;&gt;servidores&lt;/span&gt;;&#xA;  }&#xA;}&lt;/pre&gt;&#xA;&lt;p&gt;El parametro de configuracion Weight, que por omision es «1», indica cuantas peticiones seguidas se dirigiran a ese backend. Si es 5, pues mandará 5 a ese, luego 5 al siguiente, y asi.&lt;br /&gt;&#xA;El parametro fail_timeout indica el tiempo que esperara a enviar peticiones a un backend tras detectar un fallo y considerarlo caido.&lt;br /&gt;&#xA;El parametro max_fails indica cuantas veces ha de dar error el backend para marcarlo como caido.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Configuracion de Wordpress 3.0 para NginX</title>
				<link>https://javierin.com/configuracion-de-wordpress-3-0-para-nginx/</link>
				<pubDate>Tue, 28 Sep 2010 11:42:46 +0000</pubDate>
				<guid>https://javierin.com/configuracion-de-wordpress-3-0-para-nginx/</guid>
				<description>&lt;p&gt;Aqui va una configuracion funcional para &lt;strong&gt;WordPress 3.0 para &lt;a href=&#34;https://www.amazon.es/dp/B0BZVCMMT7?tag=javierin-21&amp;linkCode=osi&amp;th=1&amp;psc=1&#34; target=&#34;_blank&#34; rel=&#34;nofollow sponsored&#34;&gt;NginX&lt;/a&gt;&lt;/strong&gt;. Aunque no lo tengo activado, tambien soporta el modulo MultiSite. aunque pueda aparecer cortado por ser lineas demasiado largas, con copiar y pegar funciona bien.&lt;/p&gt;&#xA;&lt;pre&gt;server{&#xA;    server_name &lt;span style=&#34;color: #ff0000&#34;&gt;dominio.tld&lt;/span&gt;;&#xA;    listen 127.0.0.1:80;&#xA;    client_max_body_size 32M;&#xA;    #on server block&#xA;    ##necessary if using a multi-site plugin&#xA;    server_name_in_redirect off;&#xA;    ##necessary if running Nginx behind a reverse-proxy&#xA;    port_in_redirect off;&#xA;    access_log /var/log/nginx/&lt;span style=&#34;color: #ff0000&#34;&gt;dominio.tld&lt;/span&gt;-access.log;&#xA;    error_log /var/log/nginx/&lt;span style=&#34;color: #ff0000&#34;&gt;dominio.tld&lt;/span&gt;-error.log;&#xA;&#xA;    location / {&#xA;        root   &lt;span style=&#34;color: #ff0000&#34;&gt;/ruta/al/wordpress&lt;/span&gt;;&#xA;        index  index.html index.htm index.php;&#xA;        rewrite ^.*/files/(.*)$ /wp-includes/ms-files.php?file=$1 last;&#xA;        if (!-e $request_filename) {&#xA;            rewrite ^.+/?(/wp-.*) $1 last;&#xA;            rewrite ^.+/?(/.*.php)$ $1 last;&#xA;            rewrite ^(.+)$ /index.php?q=$1 last;&#xA;        }&#xA;    }&#xA;&#xA;    location ~* ^.+.(html|jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js)$&#xA;    {&#xA;        root &lt;span style=&#34;color: #ff0000&#34;&gt;/ruta/al/wordpress&lt;/span&gt;;&#xA;        rewrite ^/.*(/wp-.*/.*.(html|jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js))$ $1 last;&#xA;        rewrite ^.*/files/(.*(html|jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js))$/wp-includes/ms-files.php?file=$1 last;&#xA;        expires 30d;&#xA;        break;&#xA;    }&#xA;&#xA;    location ~ wp-.*.php|wp-admin|.php$ {&#xA;        include /etc/nginx/fastcgi_params;&#xA;        fastcgi_pass  127.0.0.1:9000;&#xA;        fastcgi_index index.php;&#xA;        &lt;span style=&#34;color: #ff0000&#34;&gt;&lt;strong&gt;&lt;span style=&#34;color: #ff0000&#34;&gt;###IMPORTANTE: NO PONER / antes de fastcgi_script_name&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&#xA;        fastcgi_param  SCRIPT_FILENAME  &lt;span style=&#34;color: #ff0000&#34;&gt;/ruta/al/wordpress&lt;/span&gt;$fastcgi_script_name;&#xA;    }&#xA;}&lt;/pre&gt;&#xA;&#xA;&lt;p&gt;&lt;small&gt;Este articulo puede contener enlaces de afiliación&lt;/small&gt;&lt;/p&gt;</description>
			</item>
			<item>
				<title>Syntax Highlight de NginX para vim</title>
				<link>https://javierin.com/sintax-highlight-de-nginx-para-vim/</link>
				<pubDate>Tue, 28 Sep 2010 11:34:11 +0000</pubDate>
				<guid>https://javierin.com/sintax-highlight-de-nginx-para-vim/</guid>
				<description>He encontrado este fichero de configuracion con el que podemos tener syntax highlighting (como se dice esto en castellano????) para las configuraciones de NginX en vim:&#xA;&lt;pre&gt;mkdir -p ~/.vim/syntax/; cd ~/.vim/syntax/;&#xA;wget -O nginx.vim http://www.vim.org/scripts/download_script.php?src_id=12990&#xA;touch ~/.vim/filetype.vim&#xA;echo &#34;au BufRead,BufNewFile /etc/nginx/* set ft=nginx&#34; &amp;gt;&amp;gt; ~/.vim/filetype.vim&#xA;&lt;/pre&gt;&#xA;Y el resultado queda asi:&#xA;&lt;a href=&#34;http://javierin.com/wp-content/uploads/2010/09/vim-nginx-syntax-highlight.png&#34;&gt;&lt;img class=&#34;aligncenter size-full wp-image-172&#34; title=&#34;vim-nginx-syntax-highlight&#34; src=&#34;http://javierin.com/wp-content/uploads/2010/09/vim-nginx-syntax-highlight.png&#34; alt=&#34;vim-nginx-syntax-highlight&#34; width=&#34;844&#34; height=&#34;422&#34; / loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&lt;/a&gt;</description>
			</item>
			<item>
				<title>Instalar Nginx en ubuntu con soporte PHP5 (php5-fpm)</title>
				<link>https://javierin.com/instalar-nginx-en-ubuntu-con-soporte-php5-php5-fpm/</link>
				<pubDate>Mon, 27 Sep 2010 09:35:09 +0000</pubDate>
				<guid>https://javierin.com/instalar-nginx-en-ubuntu-con-soporte-php5-php5-fpm/</guid>
				<description>&lt;p&gt;Hace no mucho hice el &lt;strong&gt;cambio de apache a Nginx&lt;/strong&gt; en un &lt;a href=&#34;https://www.amazon.es/dp/B0C572FQXX?tag=javierin-21&amp;linkCode=osi&amp;th=1&amp;psc=1&#34; target=&#34;_blank&#34; rel=&#34;nofollow sponsored&#34;&gt;servidor&lt;/a&gt;. La impresión general es del todo favorable. Aunque no era un servidor especialmente cargado, sí que en temas de memoria he podido apreciar que tengo mas espacio disponible para otras cosas.&lt;/p&gt;&#xA;&lt;p&gt;Vamos por pasos. Lo primero, es ponerse el repositorio de &lt;a href=&#34;http://nginx.org/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Nginx&lt;/a&gt;. Tenemos un repositorio estable y otro de desarrollo.&lt;/p&gt;&#xA;&lt;p&gt;Si queremos el &lt;strong&gt;repositorio de nginx estable&lt;/strong&gt;:&lt;br /&gt;&#xA;&lt;code&gt;sudo su -&lt;br /&gt;&#xA;echo &#34;deb http://ppa.launchpad.net/nginx/stable/ubuntu lucid main&#34; &amp;gt;&amp;gt; /etc/apt/sources.list&lt;br /&gt;&#xA;apt-key adv --keyserver keyserver.ubuntu.com --recv-keys C300EE8C&lt;br /&gt;&#xA;apt-get update&lt;br /&gt;&#xA;apt-get install nginx&lt;/code&gt;&lt;/p&gt;</description>
			</item>
			<item>
				<title>Uso de Swap en Linux</title>
				<link>https://javierin.com/uso-de-swap-en-linux/</link>
				<pubDate>Mon, 27 Sep 2010 08:37:41 +0000</pubDate>
				<guid>https://javierin.com/uso-de-swap-en-linux/</guid>
				<description>&lt;p&gt;En maquinas con memoria RAM de sobra, a veces podemos ver un &lt;strong&gt;uso excesivo de swap en linux&lt;/strong&gt;. Utilizar swap no es malo, el sistema mueve los datos de memoria que menos usa. Tiene todo el sentido. Sin embargo, en el caso de un servidor que tengo con discos SSD, no me interesa que se escriba innecesariamente en ellos, con lo que he decidido reducir la tendencia a swapear.&lt;/p&gt;&#xA;&lt;p&gt;El kernel linux tiene una propiedad ajustable llamada «&lt;strong&gt;Kernel Swappiness&lt;/strong&gt;«. Se trata de la tendencia del kernel a pasar datos a swap. Según la distribución, puede tener un valor u otro, entre 0 y 100. A mayor valor, mayor cantidad de datos de memoria intentará volcar a swap.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Comprobar reparar y optimizar todas las bases de datos de MySQL / MariaDB</title>
				<link>https://javierin.com/optimizar-bases-de-datos-mysql-automaticamente/</link>
				<pubDate>Thu, 23 Sep 2010 15:17:10 +0000</pubDate>
				<guid>https://javierin.com/optimizar-bases-de-datos-mysql-automaticamente/</guid>
				<description>Cuando hay que reparar y optimizar bases de datos mysql, podemos hacer uso de la herramienta mysqlcheck que viene incluida en la mayoría de distribuciones con los binarios del servidor MySQL.&#xA;&#xA;La sintaxis que suelo utilizar para reparar y optimizar bases de datos en MySQL es:&#xA;&#xA;&lt;strong&gt;Analizar y optimizar tablas de MySQL 5.1&lt;/strong&gt;&#xA;&lt;pre&gt;mysqlcheck -Aao --auto-repair -u root -p&lt;/pre&gt;&#xA;&lt;strong&gt;Analizar y optimizar tablas de MySQL 5.5&lt;/strong&gt; (No los soporta combinados)&#xA;&lt;pre&gt;mysqlcheck -Aa --auto-repair -u root -p&#xA;mysqlcheck -Ao --auto-repair -u root -p&lt;/pre&gt;&#xA;-A aplica el comando a todas las bases de datos&#xA;-a analiza la estructura&#xA;-o optimiza las tablas&#xA;--auto-repair intenta reparar las tablas si encuentra problemas o datos corruptos&#xA;&#xA;&lt;strong&gt;Check and auto repair MySQL databases&lt;/strong&gt;</description>
			</item>
			<item>
				<title>Microsoft Hyper-V Linux Integration Services 2.1</title>
				<link>https://javierin.com/microsoft-hyper-v-linux-integration-services-2-1/</link>
				<pubDate>Thu, 12 Aug 2010 15:45:06 +0000</pubDate>
				<guid>https://javierin.com/microsoft-hyper-v-linux-integration-services-2-1/</guid>
				<description>Los drivers de Hyper-V 2008 R2 para Linux (Linux Integration Services v2.1) estan disponibles desde finales de Julio de 2010 en la web de Microsoft. En el artículo que los referenciaba ponía que eran una beta, pero yo no veo que sea beta por ninguna parte.&#xA;&#xA;&lt;a href=&#34;http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=eee39325-898b-4522-9b4c-f4b5b9b64551&#34;&gt;Descarga Linux Integration Services 2.1 para Hyper-V&lt;/a&gt;&#xA;&lt;a href=&#34;http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=eee39325-898b-4522-9b4c-f4b5b9b64551&#34;&gt;Download Linux Integration Services 2.1 for Hyper-V&lt;/a&gt;&#xA;&#xA;Release notes de la descarga:&#xA;&#xA;Driver support for synthetic devices: The Linux integration components include support for both the synthetic network controller and synthetic storage controller that have been developed specifically for Hyper-V. These components take advantage of the new high-speed bus, VMBus, which was developed for Hyper-V.&#xA;&#xA;Fastpath Boot Support: Boot devices now take advantage of the storage VSC to provide enhanced performance.&#xA;&#xA;Timesync: The clock inside the virtual machine will remain synchronized with the clock on the host.&#xA;&#xA;Integrated Shutdown: Virtual machines running Linux can be shut down from either Hyper-V Manager or System Center Virtual Machine Manager, using the “Shut Down” command.&#xA;&#xA;Symmetric Multi-Processing (SMP) Support: Supported Linux distributions can use up to 4 virtual processors (VP) per virtual machine.&#xA;&#xA;Heartbeat: Allows the host to detect whether the guest is running and responsive.&#xA;&#xA;Pluggable Time Source: A pluggable clock source module is included to provide a more accurate time source to the guest.</description>
			</item>
			<item>
				<title>Instalar Redmine con Phusion Passenger en SLES 11 SP1 (mod_rails)</title>
				<link>https://javierin.com/instalar-redmine-con-phusion-passenger-en-sles-11-sp1-mod_rails/</link>
				<pubDate>Wed, 11 Aug 2010 15:52:54 +0000</pubDate>
				<guid>https://javierin.com/instalar-redmine-con-phusion-passenger-en-sles-11-sp1-mod_rails/</guid>
				<description>Tengo que instalar Redmine en un cliente. La maquina es una SLES 11, para variar y ya tiene funcionando un Apache2 con mod_jk. Necesitamos instalar las herramientas de desarrollo de apache, así como ruby y su sistema de gestión de modulos, gem.&#xA;&lt;pre&gt;servidor:~# zypper install gcc make ruby rubygems rubt-devel rubygem-rake rubygem-rails apache2-devel gcc-c++&#xA;servidor:~# gem install passenger&#xA;servidor:~# /usr/bin/passenger-install-apache2-module&lt;/pre&gt;&#xA;&lt;strong&gt;Este ultimo comando, nos dira si nos falta algo&lt;/strong&gt;. En caso contrario, nos compila el modulo en &lt;code&gt;/usr/lib/ruby/gems/1.8/gems/passenger-2.2.15/ext/apache2/mod_passenger.so&lt;/code&gt;&#xA;&#xA;Lo copiamos a &lt;code&gt;/usr/lib/apache2/&lt;/code&gt; porque si no, al figurar en &lt;code&gt;/etc/sysconfig/apache2&lt;/code&gt;, no lo encontrara en el inicio y no lo cargará (demasiado automatismo tonto)&#xA;&#xA;Posteriormente añadimos estas dos lineas a un .conf de apache, yo creo&#xA;&lt;code&gt;/etc/apache2/redmine-adicionales.conf&lt;/code&gt; y lo incluyo en &lt;code&gt;/etc/apache2/httpd.conf&lt;/code&gt; añadiendole la linea &lt;code&gt;Include /etc/apache2/redmine-adicionales.conf&lt;/code&gt;&#xA;&lt;code&gt;PassengerRoot /var/lib/gems/1.8/gems/passenger-2.2.15&#xA;PassengerRuby /usr/bin/ruby1.8&lt;/code&gt;&#xA;&#xA;Ahora creamos un VirtualHost nuevo en &lt;code&gt;/etc/apache2/conf.d/0x-hostname.dominio.tld.conf&lt;/code&gt; que contenga:&#xA;&lt;pre&gt;ServerName redmine.tudominio.tld&#xA;ServerAlias respondeaquitambien.tudominio.tld&#xA;DocumentRoot /srv/redmine/publicAllowOverride all&#xA;Options -MultiViews&#xA;&#xA;LogLevel warn&#xA;CustomLog /var/log/apache2/redmine.dominio.tld-access.log combined&#xA;ErrorLog /var/log/apache2/redmine.dominio.tld-error.log&#xA;&#xA;&lt;/pre&gt;&#xA;Nos vamos a /srv y nos bajamos el tarball de redmine:&#xA;&lt;pre&gt;servidor:~# cd /srv&#xA;servidor:~# wget &#39;http://rubyforge.org/frs/download.php/71723/redmine-1.0.0.tar.gz&#39;&#xA;servidor:~# tar zxvf redmine-1.0.0.tar.gz&#xA;servidor:~# mv redmine-1.0.0 redmine&#xA;servidor:~# chown -R wwwrun.www redmine&lt;/pre&gt;&#xA;Redmine depende de una base de datos, así que creamos la base de datos, usuario y la poblamos con la estructura que viene con el programa.&#xA;&lt;pre&gt;servidor:~# mysql -u root -p&#xA;mysql&amp;gt; create database redmine charset utf8;&#xA;mysql&amp;gt; grant all on redmine.* to redmine@&#39;localhost&#39; identified by &#39;contraseñaquequieras&#39;;&#xA;mysql&amp;gt; flush privileges;&lt;/pre&gt;&#xA;##NOTA: En caso de que esto te de algún problema, puedes ejecutar en el mysql también:&#xA;&lt;pre&gt;mysql&amp;gt; grant all on redmine.* to redmine@&#39;%&#39; identified by &#39;contraseñaquequieras&#39;;&#xA;mysql&amp;gt; flush privileges;&lt;/pre&gt;&#xA;##&#xA;&#xA;La configuración de la base de datos va en &lt;code&gt;/srv/redmine/config/database.yml&lt;/code&gt; y este es su contenido:&#xA;&lt;pre&gt;production:&#xA;adapter: mysql&#xA;database: redmine&#xA;host: localhost&#xA;username: redmine&#xA;password: contraseniaquequieras&#xA;encoding: utf8&#xA;socket: /var/run/mysqld/mysqld.sock&lt;/pre&gt;&#xA;Ahora vamos a poblar la base de datos con la estructura propia de redmine y pasarla a modo producción:&#xA;&lt;pre&gt;servidor:~# rake db:migrate RAILS_ENV=&#34;production&#34;&lt;/pre&gt;&#xA;*** opcional***&#xA;&lt;pre&gt;servidor:~# rake redmine:load_default_data RAILS_ENV=&#34;production&#34;&lt;/pre&gt;&#xA;*** nos llena la db datos que vienen de fabrica ***&#xA;&#xA;Por ultimo activamos el modulo, reiniciamos apache y debería salirnos Redmine al acceder con un navegador a http://redmine.dominio.tld&#xA;&lt;pre&gt;a2enmod passenger&#xA;service apache2 restart&#xA;/etc/init.d/apache2 restart&lt;/pre&gt;&#xA;A gusto del consumidor :)&#xA;&#xA;Si actualizamos a una versión mas nueva de Redmine, también hay que ejecutar&#xA;&lt;pre&gt;rake db:migrate RAILS_ENV=production&lt;/pre&gt;</description>
			</item>
			<item>
				<title>Recuperar contraseña root de MySQL / Cambiar password root MySQL</title>
				<link>https://javierin.com/recuperar-contrasena-root-de-mysql-cambiar-password-root-mysql/</link>
				<pubDate>Wed, 11 Aug 2010 15:13:48 +0000</pubDate>
				<guid>https://javierin.com/recuperar-contrasena-root-de-mysql-cambiar-password-root-mysql/</guid>
				<description>Una contraseña de root de mysql olvidada es un problema serio. Recuperar la contraseña de root de mysql es algo que puedes conseguir siguiendo estos pasos:&#xA;&#xA;1. Editamos el archivo de configuración de mysql:&#xA;Según la distribución puede estar en &lt;code&gt;/etc/mysql/my.cnf&lt;/code&gt; o &lt;code&gt;/etc/my.cnf&lt;/code&gt; por poner dos ejemplos&#xA;2. Añadimos &lt;strong&gt;en la seccion [mysqld]&lt;/strong&gt; la linea&#xA;&lt;code&gt;skip-grant-tables&lt;/code&gt;&#xA;3. Reiniciamos mysql&#xA;&lt;code&gt;service mysql restart&lt;/code&gt;&#xA;4. Entramos a mysql con usuario root y actualizamos la password de root:&#xA;&lt;code&gt; servidor:~# mysql -u root&#xA;mysql&amp;gt; use mysql;&#xA;mysql&amp;gt; update user set password=PASSWORD(&#34;nuevacontrasenia&#34;) where User=&#39;root&#39;;&#xA;mysql&amp;gt; flush privileges;&#xA;mysql&amp;gt; quit;&lt;/code&gt;&#xA;5. Editamos de nuevo la configuración de mysql y eliminamos la linea que habíamos añadido (&lt;code&gt;skip-grant-tables&lt;/code&gt;)&#xA;6. Reiniciamos mysql de nuevo y arreglado</description>
			</item>
			<item>
				<title>OTRS 2.4.7 en SLES11</title>
				<link>https://javierin.com/otrs-2-4-7-en-sles11/</link>
				<pubDate>Wed, 11 Aug 2010 14:47:31 +0000</pubDate>
				<guid>https://javierin.com/otrs-2-4-7-en-sles11/</guid>
				<description>Hay que poner un sistema de ticketing OS en un cliente. OTRS es el elegido. Tienen paquete rpm para SUSE 11.&#xA;&lt;pre&gt;servidor:~# cd /var/tmp&#xA;servidor:~# wget &#39;http://ftp.otrs.org/pub/otrs/RPMS/suse/11.0/otrs-2.4.7-01.noarch.rpm&#39;&lt;/pre&gt;&#xA;Instalamos las dependencias:&#xA;&lt;pre&gt;servidor:~# zypper in perl-DBI perl-GD perl-GDGraph perl-GDTextUtil perl-Net-DNS apache2-mod_perl perl-DBD-mysql procmail perl-libwww-perl perl-Encode-HanExtra perl-ldap perl-IO-Socket-SSL perl-SOAP-Lite perl-Apache-DBI&lt;/pre&gt;&#xA;Y luego el paquete:&#xA;&lt;pre&gt;rpm -i otrs-2.4.7-01.noarch.rpm&lt;/pre&gt;&#xA;Ahora dejamos que SLES cree el vhost por nosotros y reiniciamos apache y mysql con:&#xA;&lt;pre&gt;SuSEconfig&#xA;service apache2 restart&#xA;service mysql restart&lt;/pre&gt;&#xA;Accedemos al configurador de OTRS via web en &lt;code&gt;http://hostname/otrs/installer.pl&lt;/code&gt;&#xA;***OJO: Hay un momento en que hay que poner el usuario root de mysql para crear la db. El usuario que va debajo es el de mysql de otrs, no el de hacer login en el sistema de tickets ***&#xA;Lo demás es cosa de un wizard que te va pidiendo datos.&#xA;&#xA;Para cambiar las credenciales por defecto de OTRS, hacemos login con el usuario root@localhost / root y vamos a Preferencias, donde podremos especificar otra contraseña nueva.</description>
			</item>
			<item>
				<title>Socat - Redirigir puertos TCP / UDP</title>
				<link>https://javierin.com/socat-redirigir-puertos-tcp-udp/</link>
				<pubDate>Mon, 02 Aug 2010 16:29:52 +0000</pubDate>
				<guid>https://javierin.com/socat-redirigir-puertos-tcp-udp/</guid>
				<description>&lt;p&gt;Para redirigir puertos TCP o UDP la mejor herramienta que podemos encontrarnos es &lt;a href=&#34;http://www.dest-unreach.org/socat/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Socat&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Acceso desde una oficina a otra usando &lt;a href=&#34;https://www.amazon.es/dp/B0CG1CPMBV?tag=javierin-21&amp;linkCode=osi&amp;th=1&amp;psc=1&#34; target=&#34;_blank&#34; rel=&#34;nofollow sponsored&#34;&gt;vpn&lt;/a&gt; para conectar via RDP:&lt;/p&gt;&#xA;&lt;pre&gt;socat TCP4-LISTEN:3389 TCP:host-remoto:3389&lt;/pre&gt;&#xA;&lt;p&gt;Acceso temporal para el mysql desde una conexion VPN en un mysql que solo escucha en 127.0.0.1&lt;/p&gt;&#xA;&lt;pre&gt;socat TCP-LISTEN 172.16.12.1:3307,fork TCP:127.0.0.1:3306&lt;/pre&gt;&#xA;&lt;p&gt;Escritura directa via echo «comando» &amp;gt;&amp;gt;/tmp/archivo_al_que_mandamos_lineas redirigida a puerto serie&lt;/p&gt;&#xA;&lt;pre&gt;socat READLINE,history=/tmp/archivo_al_que_mandamos_lineas dev/ttyS0,raw,echo=0,crnl&lt;/pre&gt;&#xA;&lt;p&gt;Nos conectamos a un host y solo aceptamos los primero 2048 bytes que envie (por si los floods)&lt;/p&gt;</description>
			</item>
			<item>
				<title>Supervisord: Un gestor de procesos para linux</title>
				<link>https://javierin.com/supervisord-un-gestor-de-procesos-para-linux/</link>
				<pubDate>Mon, 19 Jul 2010 16:12:34 +0000</pubDate>
				<guid>https://javierin.com/supervisord-un-gestor-de-procesos-para-linux/</guid>
				<description>Hoy he tenido que instalar Supervisord en un servidor para tener controlado un proceso php (bucle) cuando se muera.&#xA;&#xA;El proceso en ubuntu ha pasado a ser bastante directo, con aptitude lo instalamos (actualmente en version 3.0a8-1).&#xA;&lt;pre&gt;aptitude install supervisor&lt;/pre&gt;&#xA;Despues, creamos una configuracion en /etc/supervisord/conf.d/nombredelservicio&lt;strong&gt;.conf&lt;/strong&gt;&#xA;&lt;pre&gt;[program:nombredelprograma]&#xA;command=/el/archivo/ejecutable&#xA;process_name=%(program_name)s&#xA;numprocs=1&#xA;directory=/tmp&#xA;umask=022&#xA;priority=999&#xA;autostart=true&#xA;autorestart=true&#xA;startsecs=10&#xA;startretries=3&#xA;exitcodes=0,2&#xA;stopsignal=TERM&#xA;stopwaitsecs=10&#xA;user=www-data&#xA;redirect_stderr=false&#xA;stdout_logfile=/var/log/supervisor/nombredelproceso.log&#xA;stdout_logfile_maxbytes=10MB&#xA;stdout_logfile_backups=10&#xA;stdout_capture_maxbytes=1MB&#xA;stderr_logfile=/var/log/supervisor/nombredelproceso-error.log&#xA;stderr_logfile_maxbytes=1MB&#xA;stderr_logfile_backups=10&#xA;stderr_capture_maxbytes=1MB&#xA;serverurl=AUTO&lt;/pre&gt;&#xA;A continuacion, el despiece de las directivas de configuración (extraido del manual):&#xA;&#xA;&lt;strong&gt;command&lt;/strong&gt;: Se refiere al ejecutable, podemos referenciarlo directamente con la ruta absoluta, o bien, si esta en el path, invocarlo sin mas. (Mejor usar rutas absolutas por seguridad)&#xA;process_name: Se usa para buscar el numero de instancias que hay en ejecucion y compararlo con numprocs.&#xA;&lt;strong&gt;numprocs&lt;/strong&gt;: Numero de procesos que es deseable que esten ejecutandose a la vez&#xA;&lt;strong&gt;directory&lt;/strong&gt;: Especifica desde que directorio se hace la ejecucion del comando&#xA;&lt;strong&gt;umask&lt;/strong&gt;: especifica la umask con la que se lanza el proceso, Interesante en caso de que haya que tocar archivos ajenos.&#xA;priority: No es la prioridad del proceso, sino la prioridad de inicio del proceso dentro de supervisord. A menor valor, antes se iniciara en el arranque. Interesante para ordenar dependencias. Es efectivo en comandos generales como start all y stop all&#xA;&lt;strong&gt;autostart&lt;/strong&gt;: El servicio ha de iniciarse automaticamente cuando lanzamos supervisord&#xA;&lt;strong&gt;autorestart&lt;/strong&gt;: Se ha de tratar de reiniciar el servicio automaticamente. Valores validos: true reinicia siempre el servicio, unexpected solo cuando la salida se produce con un exitcode distinto a los autorizados y false nunca reinicia servicios.&#xA;&lt;strong&gt;exitcodes&lt;/strong&gt;: Exitcodes asociados a autorestart&#xA;&lt;strong&gt;startsecs&lt;/strong&gt;: Segundos que debe permanecer ejecutandose el servicio para que se considere que ha sido lanzado correctamente&#xA;&lt;strong&gt;startretries&lt;/strong&gt;: Numero de veces que podemos intentar lanzarlo antes de que supervisord lo pase al estado FATAL&#xA;&lt;strong&gt;stopsignal&lt;/strong&gt;: Señal que se envia al proceso cuando hacemos un stop mediante supervisorctl. Puede ser uno de estos: TERM, HUP, INT, QUIT, KILL, USR1, o USR2.&#xA;&lt;strong&gt;user&lt;/strong&gt;: El usuario con el que el proceso se lanza.&#xA;&lt;strong&gt;environment&lt;/strong&gt;: Valores en la forma VARIABLE=VALOR que se incluiran en el entorno de ejecucion del servicio&#xA;&lt;strong&gt;redirect_stderr&lt;/strong&gt;: Redirigir la salida de los errores al log propio de supervisord en vez de al individual del servicio&#xA;&#xA;*log: opciones de log para su rotado, conservacion y clasificacion, se autoexplican.&#xA;&#xA;Una vez tenemos finalizada la configuracion del servicio, vamos a ver el estado del mismo&#xA;&lt;pre&gt;root@servidor:/etc/supervisor/conf.d# supervisorctl status&#xA;root@servidor:/etc/supervisor/conf.d#&lt;/pre&gt;&#xA;Como? Por que no aparece el servicio? Pues porque supervisor no sabe aun que existe... Vamos a hacer que recargue su configuración:&#xA;&lt;pre&gt;root@servidor:/etc/supervisor/conf.d# supervisorctl reload&#xA;Restarted supervisord&#xA;root@servidor:/etc/supervisor/conf.d# supervisorctl status&#xA;nombreservicio                   STARTING&#xA;root@servidor:/etc/supervisor/conf.d# supervisorctl status&#xA;nombreservicio                   RUNNING    pid 28182, uptime 0:00:13&#xA;&lt;/pre&gt;&#xA;Para este ejemplo, he utilizado como comando &#34;sleep 15&#34;, con lo que no entra en estado de error al estar funcionando mas de 10 segundos.&#xA;&#xA;si queremos detener un servicio, por ejemplo para una ventana de mantenimiento, podemos de la siguiente manera.&#xA;&lt;pre&gt;root@servidor:/etc/supervisor/conf.d# supervisorctl stop nombreservicio&#xA;nombreservicio: stopped&#xA;root@servidor:/etc/supervisor/conf.d# supervisorctl status&#xA;nombreservicio                   STOPPED    Jul 21 12:25 PM&lt;/pre&gt;&#xA;Y de la misma manera, iniciarlo con supervisorctl start nombreservicio.</description>
			</item>
	</channel>
</rss>
