<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Scripts on Héctor Bautista</title><link>https://hbautista.com/tags/scripts/</link><description>Recent content in Scripts on Héctor Bautista</description><generator>Hugo -- gohugo.io</generator><language>es-ES</language><lastBuildDate>Tue, 20 May 2014 14:00:36 +0000</lastBuildDate><atom:link href="https://hbautista.com/tags/scripts/index.xml" rel="self" type="application/rss+xml"/><item><title>Megatools en Debian Jessie</title><link>https://hbautista.com/p/megatools-en-debian-jessie/</link><pubDate>Tue, 20 May 2014 14:00:36 +0000</pubDate><guid>https://hbautista.com/p/megatools-en-debian-jessie/</guid><description>&lt;img src="https://hbautista.com/images/2018/Logo-Mega.png" alt="Featured image of post Megatools en Debian Jessie" /&gt;&lt;p&gt;&lt;img alt="Megatools" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://hbautista.com/images/2014/Megatools.png"&gt;&lt;/p&gt;&#10;&lt;p&gt;Después de un buen rato de no publicar nada por acá, volvemos a las andadas u.u&lt;/p&gt;&#10;&lt;p&gt;Pues creo que todos conocen o al menos alguna vez han descargado algún archivo desde &lt;a title="Mega" href="http://mega.co.nz/" target="_blank" rel="noopener"&gt;Mega&lt;/a&gt;. Si te creas una cuenta te permite almacenar hasta 50GiB de tu información.&lt;/p&gt;&#10;&lt;p&gt;&lt;img alt="Mega Signup" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://hbautista.com/images/2014/Mega-Sigup.png"&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;img alt="Logo Mega" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://hbautista.com/images/2014/Logo-Mega.png"&gt;&lt;/p&gt;&#10;&lt;p&gt;Tiene una aplicación para iOS, Android y un cliente para escritorio que por el momento nada más hay para Hasefroch.&lt;/p&gt;&#10;&lt;p&gt;Es una buena opción para subir o compartir archivos que no puedas enviar por correo electrónico, como el vídeo que grabaste de tu sobrino dónde está cantando, el vídeo que grabaste de tu primo al que le jugaron una broma, etc.&lt;/p&gt;&#10;&lt;p&gt;Si te pusiste a escanear esas fotos de cuando eras niño(a) y en ese tiempo, pues no existían las cámaras digitales (ROFL). En fin, pueden ser muchos motivos y muchos tipos de archivo o de información que quieras compartir con tu familia, trabajo, etc.&lt;/p&gt;&#10;&lt;p&gt;Imagina que grabaste la graduación de tu hermano(a) de la prepa o universidad, más parte del convivio familiar y a eso le agregas fotos del evento y decides crear un DVD de autoría propia de dicho evento. Una vez terminado te queda un bonito DVD de 4.7GiB como máximo de tal acontecimiento.&lt;/p&gt;&#10;&lt;p&gt;Ahora resulta que se lo quieres mandar a alguien, para que tenga una copia de dicho recuerdo, creas una imágen ISO de dicho archivo y por obvias razones no se la puedes mandar en un correo.&lt;/p&gt;&#10;&lt;p&gt;Algunos servicios de almacenamiento tampoco te permiten tener un archivo tan grande, entonces te surge la necesidad de &amp;ldquo;partirlo&amp;rdquo; en varios pedacitos que se puedan manejar con mayor comodidad.&lt;/p&gt;&#10;&lt;p&gt;Generalmente a este proceso se le denomina &amp;ldquo;comprimir en varias partes&amp;rdquo; que es lo más común que se hace en estos casos.&lt;/p&gt;&#10;&lt;p&gt;Y bueno, después de muchos días y esfuerzo invertido logras por fin tener tus &amp;ldquo;pedacitos&amp;rdquo; que quieres enviar, pero aún son archivos muy &amp;ldquo;grandes y pesados&amp;rdquo; como para enviarlos por correo electrónico. Así que no queda de otra que usar un servicio como el que ofrece Mega.&lt;/p&gt;&#10;&lt;p&gt;Pues bien, igual después de batallarle un poco logras subir dichos archivos al servicio y te genera los enlaces para la descarga que es lo que le enviarás a la persona o personas que quieras que descarguen dicho contenido.&lt;/p&gt;&#10;&lt;p&gt;Si fueran unos 4 o 5 enlaces, no hay tanto problema, el servicio Mega te permite descargar varios archivos simultáneamente sin problemas. Las cosas se complican cuando son 20, 30 o hasta 45 enlaces.&lt;/p&gt;&#10;&lt;p&gt;Para estos casos se hace necesario el usar algún tipo de gestor de descargas, hay uno para sistemas Hasefroch y encontré algunos esfuerzos para Linux, hasta que dí con Megatools.&lt;/p&gt;&#10;&lt;p&gt;&lt;img loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://hbautista.com/images/2018/Mega-Sync.png"&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;img loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://hbautista.com/images/2018/Mega-Mobile-Apps.png"&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;img loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://hbautista.com/images/2018/Mega.png"&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;a title="Megatools" href="http://megatools.megous.com/" target="_blank" rel="noopener"&gt;Megatools&lt;/a&gt; es un proyecto hecho en Python que consiste en una colección de programas para acceder al servicio de Mega desde la línea de comandos.&lt;/p&gt;&#10;&lt;p&gt;Aunque ahorita el proyecto está detenido y hay un anuncio de que ya no van a continuar con el desarrollo, es funcional y puede ser usado sin problemas aparentes.&lt;/p&gt;&#10;&lt;p&gt;En mi caso estoy usando Debian Jessie (Testing) y aquí vemos la forma de cómo hacer para compilar dicho proyecto.&lt;/p&gt;&#10;&lt;p&gt;Lo que se necesita es descargar el código fuente del proyecto:&lt;/p&gt;&#10;&lt;p&gt;&lt;a title="http://megatools.megous.com/builds/megatools-1.9.91.tar.gz" href="http://megatools.megous.com/builds/megatools-1.9.91.tar.gz" target="_blank" rel="noopener"&gt;&lt;a class="link" href="http://megatools.megous.com/builds/megatools-1.9.91.tar.gz" target="_blank" rel="noopener"&#10; &gt;http://megatools.megous.com/builds/megatools-1.9.91.tar.gz&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;Una vez que lo hayas descargado, extrae el contenido en alguna carpeta, después quedará abrir la terminal y accesar a dicha carpeta.&lt;/p&gt;&#10;&lt;p&gt;Para prevenir que a la hora de compilar el paquete descargado tengamos problemas, instalemos lo necesario (como root):&lt;/p&gt;&#10;&lt;p&gt;root@kenobi:/home/hbautista# aptitude install libglib2.0-dev libcurl4-openssl-dev libssl-dev&lt;/pre&gt;&lt;/p&gt;&#10;&lt;p&gt; Ahora procederemos a la instalación, como típico paquete de Linux, se ejecuta Configure (como usuario normal):&lt;/p&gt;&#10;&lt;p&gt;hbautista@kenobi:~/Descargas/megatools-1.9.91$ ./configure&lt;/pre&gt;&lt;/p&gt;&#10;&lt;p&gt;Luego make&lt;/p&gt;&#10;&lt;p&gt;hbautista@kenobi:~/Descargas/megatools-1.9.91$ make&lt;/pre&gt;&lt;/p&gt;&#10;&lt;p&gt;Y por último con privilegios de root, make install&lt;/p&gt;&#10;&lt;p&gt;hbautista@kenobi:~/Descargas/megatools-1.9.91$ sudo make install&lt;/pre&gt;&lt;/p&gt;&#10;&lt;p&gt; Una vez hecho eso veremos que tenemos varios comandos disponiblles&lt;/p&gt;&#10;&lt;p&gt;hbautista@kenobi:&lt;del&gt;$ mega&#10;megadf megadl megaget megals megamkdir megamv megaput megareg megarm megasync&#10;hbautista@kenobi:&lt;/del&gt;$ mega&lt;/pre&gt;&lt;/p&gt;&#10;&lt;p&gt; Como en mi caso no necesito configurar una cuenta mega, sino simplemente descargar archivos usando la url &amp;ldquo;completa&amp;rdquo;, omito dicho paso y solamente hago uso de megadl que es precisamente el que voy a necesitar:&lt;/p&gt;&#10;&lt;p&gt;hbautista@kenobi:&lt;del&gt;/Descargas$ megadl &amp;lsquo;&lt;a class="link" href="https://mega.co.nz/#!1c1WQIZI!25fGpiBF4W1O6phNFo2A1oxVob46009m0cLuSKcfVrk%27" target="_blank" rel="noopener"&#10; &gt;https://mega.co.nz/#!1c1WQIZI!25fGpiBF4W1O6phNFo2A1oxVob46009m0cLuSKcfVrk'&lt;/a&gt;&#10;megadl: error while loading shared libraries: libmega.so.0: cannot open shared object file: No such file or directory&#10;hbautista@kenobi:&lt;/del&gt;/Descargas$&lt;/pre&gt;&lt;/p&gt;&#10;&lt;p&gt; Si les pasa como a mi que les sale ese error de &amp;ldquo;error while loading shared libraries:…&amp;rdquo; se debe principalmente a que las librerías recién instaladas aún no están &amp;ldquo;actualizadas&amp;rdquo;. Para hacerlo, basta ejecutar como root lo siguiente:&lt;/p&gt;&#10;&lt;p&gt;root@kenobi:/home/hbautista# ldconfig&lt;/pre&gt;&lt;/p&gt;&#10;&lt;p&gt;Y si después de eso no funcionara:&lt;/p&gt;&#10;&lt;p&gt;root@kenobi:/home/hbautista# ldconfig.real&lt;/pre&gt;&lt;/p&gt;&#10;&lt;p&gt;Y entonces sí, volver a intentar la descarga:&lt;/p&gt;&#10;&lt;p&gt;hbautista@kenobi:&lt;del&gt;/Descargas$ megadl &amp;lsquo;&lt;a class="link" href="https://mega.co.nz/#!tFVFwTYT!7qkLNQHk45J5gAnn-YkOOWBVjq5xn_nAefeklwl8jCk%27" target="_blank" rel="noopener"&#10; &gt;https://mega.co.nz/#!tFVFwTYT!7qkLNQHk45J5gAnn-YkOOWBVjq5xn_nAefeklwl8jCk'&lt;/a&gt;&#10;Downloaded Vaughan System.part087.rar&#10;hbautista@kenobi:&lt;/del&gt;/Descargas$&lt;/pre&gt;&lt;/p&gt;&#10;&lt;p&gt; Ahora bien, no tiene para hacer descargas simultaneas, pero podemos abrir varias terminales y ejecutar varias veces el comando, tantas como ustedes (y su conexión a internet) se lo permitan. Pero también me pregunté si podemos pasarle varios enlaces en una misma orden:&lt;/p&gt;&#10;&lt;p&gt;hbautista@kenobi:&lt;del&gt;/Descargas$ megadl &amp;lsquo;&lt;a class="link" href="https://mega.co.nz/#!ZcUjzApI!MnJALBLkS9FQptNDi6Ob3OAgIs_xJBuKWaIFXkFocU0%27" target="_blank" rel="noopener"&#10; &gt;https://mega.co.nz/#!ZcUjzApI!MnJALBLkS9FQptNDi6Ob3OAgIs_xJBuKWaIFXkFocU0'&lt;/a&gt; &amp;lsquo;&lt;a class="link" href="https://mega.co.nz/#!MYVSwQhA!ExJ0d2_t2mtZwm8bDQlnBG1F8CaQRdU39OFyZLgtT_M%27" target="_blank" rel="noopener"&#10; &gt;https://mega.co.nz/#!MYVSwQhA!ExJ0d2_t2mtZwm8bDQlnBG1F8CaQRdU39OFyZLgtT_M'&lt;/a&gt; &amp;lsquo;&lt;a class="link" href="https://mega.co.nz/#!wRdWEBqR!02Zmwza6LJDMLdFOn9R_ZYyHfcYKIxGfMvTegCB9MAI%27" target="_blank" rel="noopener"&#10; &gt;https://mega.co.nz/#!wRdWEBqR!02Zmwza6LJDMLdFOn9R_ZYyHfcYKIxGfMvTegCB9MAI'&lt;/a&gt; &amp;lsquo;&lt;a class="link" href="https://mega.co.nz/#!xV9U2TrL!JDo5UQwbNk6kEw96_j_R5bZa2SpE7fHE-y9hQDxy9n8%27" target="_blank" rel="noopener"&#10; &gt;https://mega.co.nz/#!xV9U2TrL!JDo5UQwbNk6kEw96_j_R5bZa2SpE7fHE-y9hQDxy9n8'&lt;/a&gt;&#10;Downloaded Vaughan System.part064.rar&#10;Downloaded Vaughan System.part065.rar&#10;Downloaded Vaughan System.part066.rar&#10;Downloaded Vaughan System.part067.rar&#10;hbautista@kenobi:&lt;/del&gt;/Descargas$&lt;/pre&gt;&lt;/p&gt;&#10;&lt;p&gt; Y pues si, aunque se va descargando de uno en uno, al menos dejas &amp;ldquo;encolados&amp;rdquo; varios archivos a la vez.&lt;/p&gt;&#10;&lt;p&gt;En fin, si quieren ver que más cosas se pueden hacer con Megatools, les dejo el siguiente video:&lt;/p&gt;&#10;&lt;p&gt;Espero publicar más seguido 😀&lt;/p&gt;&#10;</description></item><item><title>Configurar ALSA en Debian y reproducción de música en segundo plano</title><link>https://hbautista.com/p/configurar-alsa-en-debian-y-reproduccion-de-musica-en-segundo-plano/</link><pubDate>Thu, 22 Nov 2012 23:00:11 +0000</pubDate><guid>https://hbautista.com/p/configurar-alsa-en-debian-y-reproduccion-de-musica-en-segundo-plano/</guid><description>&lt;img src="https://hbautista.com/images/2012/alsaequal-1.png" alt="Featured image of post Configurar ALSA en Debian y reproducción de música en segundo plano" /&gt;&lt;p&gt;He instalado un servidor casero con Debian Squeeze, y como tal, sólo se ha instalado lo necesario para que funcione como tal, servir como servidor Web para manejar control de inventario de bienes informáticos y poco más.&lt;/p&gt;&#10;&lt;p&gt;Resulta que después de dicha instalación (aproximadamente 1 mes después) me surge la necesidad de tener una fuente de audio &amp;ldquo;permanente&amp;rdquo; para el conmutador de la empresa, es decir, el clásico sonido de música en espera cambiarlo por un archivo de audio cualquiera.&lt;/p&gt;&#10;&lt;p&gt; [Alsamixer&lt;/p&gt;&#10;&lt;p&gt;&amp;quot; data-image-caption=&amp;quot;&amp;quot; data-large-file=&amp;quot;/images/2012/alsaequal-1.png&amp;quot; class=&amp;ldquo;aligncenter size-medium wp-image-930&amp;rdquo; title=&amp;ldquo;Alsamixer&amp;rdquo; src=&amp;quot;/images/2012/alsaequal-1.png&amp;quot; alt=&amp;ldquo;Alsamixer&amp;rdquo; width=&amp;ldquo;300&amp;rdquo; height=&amp;ldquo;208&amp;rdquo; srcset=&amp;quot;/images/2012/alsaequal-1.png 300w, /images/2012/alsaequal-1.png 768w, /images/2012/alsaequal-1.png 1014w&amp;quot; sizes=&amp;ldquo;auto, (max-width: 300px) 100vw, 300px&amp;rdquo; /&amp;gt;]&lt;a class="link" href="https://hbautista.com/images/2012/alsaequal-1.png" &gt;1&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;En ese sentido, hay dos equipos que actuán de servidores en el site donde se encuentra el conmutador, pero sólo el equipo con Debian tiene tarjeta de audio, así que el otro quedó descartado.&lt;/p&gt;&#10;&lt;h2 id="manos-a-la-obra"&gt;Manos a la obra&#10;&lt;/h2&gt;&lt;p&gt;Ese pequeño servidor con Debian no tiene ambiente gráfico, se instaló (como mencioné al inicio) sólo la base y de ahí a instalar los paquetes que hicieron falta para dejarlo funcionando. Pues bien, al no instalar el ambiente gráfico no se instalaron los paquetes necesarios para que se pueda oir desde consola.&lt;/p&gt;&#10;&lt;p&gt;Checamos que estén cargados los módulos (en mi caso, sí lo estaba)&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;~# cat /proc/asound/modules&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; snd_via82xx&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Y checar qué módulos se están cargando&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# lsmod |grep snd&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;snd_via82xx &lt;span style="color:#ae81ff"&gt;15256&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;2&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;gameport &lt;span style="color:#ae81ff"&gt;6061&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt; snd_via82xx&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;snd_ac97_codec &lt;span style="color:#ae81ff"&gt;79136&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt; snd_via82xx&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ac97_bus &lt;span style="color:#ae81ff"&gt;710&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt; snd_ac97_codec&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;snd_pcm &lt;span style="color:#ae81ff"&gt;47226&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;3&lt;/span&gt; snd_via82xx,snd_ac97_codec&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;snd_page_alloc &lt;span style="color:#ae81ff"&gt;5045&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;2&lt;/span&gt; snd_via82xx,snd_pcm&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;snd_mpu401_uart &lt;span style="color:#ae81ff"&gt;4067&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt; snd_via82xx&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;snd_seq_midi &lt;span style="color:#ae81ff"&gt;3576&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;snd_seq_midi_event &lt;span style="color:#ae81ff"&gt;3684&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt; snd_seq_midi&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;snd_rawmidi &lt;span style="color:#ae81ff"&gt;12513&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;2&lt;/span&gt; snd_mpu401_uart,snd_seq_midi&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;snd_seq &lt;span style="color:#ae81ff"&gt;35463&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;2&lt;/span&gt; snd_seq_midi,snd_seq_midi_event&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;snd_timer &lt;span style="color:#ae81ff"&gt;12270&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;2&lt;/span&gt; snd_pcm,snd_seq&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;snd_seq_device &lt;span style="color:#ae81ff"&gt;3673&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;3&lt;/span&gt; snd_seq_midi,snd_rawmidi,snd_seq&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;snd &lt;span style="color:#ae81ff"&gt;34423&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;11&lt;/span&gt; snd_via82xx,snd_ac97_codec,snd_pcm,snd_mpu401_uart,snd_rawmidi,snd_seq,snd_timer,snd_seq_device&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;En caso de que no estén instalados los paquetes necesarios, los instalamos&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# aptitude install alsa-utils alsa-oss alsa-tools&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Bastaría realizar el paso siguiente para ya dejar funcionando la tarjeta, y no dar tantas vueltas como lo hice yo&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# alsaconf&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Sonido en Debian&lt;/p&gt;&#10;&lt;p&gt;&amp;quot; data-image-caption=&amp;quot;&amp;quot; data-large-file=&amp;quot;/images/2012/debian211-1.png&amp;quot; class=&amp;ldquo;size-medium wp-image-931 aligncenter&amp;rdquo; src=&amp;quot;/images/2012/debian211-1.png&amp;quot; alt=&amp;quot;&amp;quot; width=&amp;ldquo;300&amp;rdquo; height=&amp;ldquo;221&amp;rdquo; srcset=&amp;quot;/images/2012/debian211-1.png 300w, /images/2012/debian211-1.png 768w, /images/2012/debian211-1.png 800w&amp;quot; sizes=&amp;ldquo;auto, (max-width: 300px) 100vw, 300px&amp;rdquo; /&amp;gt;&lt;/p&gt;&#10;&lt;p&gt;El problema viene cuando vemos en la &lt;a title="Wiki Alsa Debian" href="http://wiki.debian.org/ALSA" target="_blank" rel="noopener"&gt;Wiki de ALSA en Debian &lt;/a&gt;lo siguiente:&lt;/p&gt;&#10;&#10; &lt;blockquote&gt;&#10; &#10; &lt;/blockquote&gt;&#10;&#10; &lt;blockquote&gt;&#10; &lt;p&gt;For release Squeeze or any later release, alsaconf is no longer available in package &lt;a title="alsa-utils" href="http://packages.debian.org/alsa-utils" target="_blank" rel="noopener"&gt;alsa-utils&lt;/a&gt;. So try to configure alsa by running the command &amp;lsquo;&lt;strong&gt;alsactl init&lt;/strong&gt;&amp;rsquo; as root. Just ignore the error message like &amp;lsquo;Unknown hardware&amp;rsquo; (this issue said to be fixed in alsa-utils .20), then reboot and try to test your sound. For more details please see this &lt;a title="Forums Debian" href="http://forums.debian.net/viewtopic.php?f=6&amp;t=39116" target="_blank" rel="noopener"&gt;thread&lt;/a&gt;.&lt;/p&gt;&#10;&#10; &lt;/blockquote&gt;&#10;&lt;p&gt;Así que tendremos que ejecutar lo siguiente como root:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# alsactl init&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Y con eso ya tenemos resuelto el problema de sonido, bastaría hacer una prueba colocando bocinas o auriculares y reproducir algún archivo de audio para corroborar que todo funciona bien.&lt;/p&gt;&#10;&lt;p&gt;Ahora bien, una vez que ya tengo solucionado el problema de sonido viene ver el segundo punto, dejar audio (o música) reproduciendo en dicho servidor de forma continua, es decir, que esté reproduciendo el o los archivos de audio (mp3) de forma aleatoria y sin parar.&lt;/p&gt;&#10;&lt;p&gt;Para esto usaremos dos programas, el primero es el viejo conocido mplayer(&lt;a class="link" href="http://www.mplayerhq.hu" target="_blank" rel="noopener"&#10; &gt;http://www.mplayerhq.hu&lt;/a&gt;) que me servirá para reproducir archivos de audio.&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ mplayer &lt;span style="color:#e6db74"&gt;&amp;#34;01 Diablo.mp3&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Con esto hacemos una prueba simple de reproducción.&lt;/p&gt;&#10;&lt;p&gt;Si tenemos varios archivos, el comando sería el siguiente:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ mplayer *.mp3&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Si queremos que la reproducción se repita como en un bucle, usamos la opción -loop indicando con un número las veces que queremos que se repita:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ mplayer &lt;span style="color:#e6db74"&gt;&amp;#34;03 Elysium.mp3&amp;#34;&lt;/span&gt; -loop &lt;span style="color:#ae81ff"&gt;5&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Con eso logramos que se repita 5 veces, pero si queremos que sea indefinido, es decir, hasta que nosotros lo cancelemos, sería:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ mplayer &lt;span style="color:#e6db74"&gt;&amp;#34;03 Elysium.mp3&amp;#34;&lt;/span&gt; -loop &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Ya avanzamos, ahora la idea es tener varios archivos que se reproduzcan de forma indefinida pero también de forma aleatoria, para lograr esto último, usamos la opción -shuffle:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ mplayer -shuffle -loop &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; *.mp3&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;En este caso, tengo un directorio llamado &amp;ldquo;bond&amp;rdquo; con unos 15 archivos mp3 que quiero que se reproduzcan de forma aleatoria y que se repitan indefinidamente, pero además que si cierro sesión via tty1, putty o ssh, el comando se siga ejecutando en segundo plano. En este caso nohup(&lt;a class="link" href="http://rm-rf.es/nohup-mantiene-ejecucion-comando-pese-salir-terminal/" target="_blank" rel="noopener"&#10; &gt;http://rm-rf.es/nohup-mantiene-ejecucion-comando-pese-salir-terminal/&lt;/a&gt;) es nuestro amigo ñ_ñ&lt;/p&gt;&#10;&lt;p&gt;Quedando el comando final de la siguiente forma:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;hbautista@war-machine:~$ nohup mplayer -shuffle -loop &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; bond/*.mp3 &amp;amp;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Y con esto logramos el cometido: Reproducir de forma aleatoria y de forma indefinida los archivos .mp3 que se encuentren en el directorio bond dentro de la carpeta del usuario, lo haga en segundo plano aún si dicho usuario cierra sesión.&lt;/p&gt;&#10;</description></item><item><title>Programar respaldos SQL Server 2008 r2 express</title><link>https://hbautista.com/p/programar-respaldos-sql-server-2008-r2-express/</link><pubDate>Sat, 13 Oct 2012 17:41:05 +0000</pubDate><guid>https://hbautista.com/p/programar-respaldos-sql-server-2008-r2-express/</guid><description>&lt;img src="https://hbautista.com/images/2012/sql_server_2008_r2_small-1.jpg" alt="Featured image of post Programar respaldos SQL Server 2008 r2 express" /&gt;&lt;p&gt;&lt;img alt="SQL Server 2008 R2" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://hbautista.com/images/2012/sql_server_2008_r2_small-1.jpg"&gt;&lt;/p&gt;&#10;&lt;p&gt;Resulta que por cuestiones laborales tengo la necesidad de hacer respaldos de una base de datos del MS SQL Server 2008 R2 express, y pues resulta que aunque se pueda instalar el &lt;a title="MS SQL Server Management Studio Express" href="http://www.microsoft.com/es-es/download/details.aspx?id=8961" target="_blank" rel="noopener"&gt;MS SQL Server Management Studio Express&lt;/a&gt;, simplemente no podremos tener un plan de mantenimiento o automatización, puesto que esa &lt;a title="http://msdn.microsoft.com/en-us/library/ms187658.aspx" href="http://msdn.microsoft.com/en-us/library/ms187658.aspx" target="_blank" rel="noopener"&gt;versión carece&lt;/a&gt; del &lt;a title="SQL Agent Service" href="http://msdn.microsoft.com/en-us/library/ms189237.aspx" target="_blank" rel="noopener"&gt;SQL Agent Service&lt;/a&gt;.&lt;/p&gt;&#10;&lt;p&gt;Buscando una posible solución me encontré muchas formas de hacerlo.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Usando &lt;a title="SQL Server Databases Backup with PowerShell" href="http://j.mp/QXNgXc" target="_blank" rel="noopener"&gt;Powershell&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;Usando el &lt;a title="Management Studio 1" href="http://www.sectorgamer.com/threads/crear-respaldos-autom%C3%A1ticos-en-sql-server-2005-y-2008.3570/" target="_blank" rel="noopener"&gt;Management&lt;/a&gt; Studio&lt;/li&gt;&#10;&lt;li&gt;&lt;a title="Backups automáticos de SQL Server Express" href="http://j.mp/QXNpcX" target="_blank" rel="noopener"&gt;Management Studio&lt;/a&gt; con un archivo .bat&lt;/li&gt;&#10;&lt;li&gt;Y finalmente usando &lt;a title="Backup automáticos de bases de datos SQL Server 2008" href="http://j.mp/QXNqh2" target="_blank" rel="noopener"&gt;sqlcmd&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Claro, el Management Studio te facilita enormemente las cosas, puedes realizar muchas cosas más aparte de los planes de mantenimiento.&lt;/p&gt;&#10;&lt;p&gt;&lt;img alt="Multi-Server-Mgmt-Dashboard" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://hbautista.com/images/2012/Multi-Server-Mgmt-Dashboard-1.png"&gt;&lt;/p&gt;&#10;&lt;p&gt;Había una forma bastante simple de hacerlo y la encontré &lt;a title="Hacer backup de Sql server mediante línea de comandos" href="http://j.mp/QXNLjK" target="_blank" rel="noopener"&gt;aquí&lt;/a&gt;, pero me encontré con el inconveniente de que para empezar si ejecutaba el comando sqlcmd así sin argumentos, simplemente me marcaba un error:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sqlcmd&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;HResult 0x2, Level 16, State &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Named Pipes Provider: Could not open a connection to SQL Server &lt;span style="color:#f92672"&gt;[&lt;/span&gt;2&lt;span style="color:#f92672"&gt;]&lt;/span&gt;.&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Entonces ahí mismo encontré este &lt;a title="Hacer backup de Sql server mediante línea de comandos" href="http://j.mp/QXNLjK" target="_blank" rel="noopener"&gt;interesante artículo&lt;/a&gt; donde habla de cómo usar esa shell de SQL Server. Las pruebas simples que hice funcionaron muy bien y ahí habría quedado sino fuera porque quería que me guardara el formato de fecha y hora, porque como quedan en un mismo directorio (por ahora), el anterior no me funcionaba, porque me machacaría las copias previas.&lt;/p&gt;&#10;&lt;p&gt;Así que use &lt;a title="Backup automáticos de bases de datos SQL Server 2008" href="http://j.mp/QXNqh2" target="_blank" rel="noopener"&gt;este otro&lt;/a&gt; que está más elaborado. Aunque lo tuve que cambiar debido a que no me gustaba la forma en que me dejaba los nombres de los archivos generados. Como ya tenía rato de no tocar este tipo de cosas, pues a googlear un poco y me encontré dos interesantes artículos: &lt;a title="How to Format Date/Time" href="http://j.mp/QXOLoh" target="_blank" rel="noopener"&gt;How to format Date/Time&lt;/a&gt; y &lt;a title="Date and Time Conversions Using SQL Server" href="http://j.mp/QXONwi" target="_blank" rel="noopener"&gt;Date and Time Conversions Using SQL Server&lt;/a&gt;, esos artículos me ayudaron a entender mejor la forma de tratar las fechas.&lt;/p&gt;&#10;&lt;p&gt;Funcionó, hice varias pruebas y funcionaron ambas, pero aún no estaba del todo contento con el resultado, sobre todo porque me dejaba archivos del tipo: &lt;strong&gt;RespaldoBD_13.10.2012_12:40.BAK&lt;/strong&gt; y esos puntos en las fechas no me gustaban nadita ¬¬.&lt;/p&gt;&#10;&lt;p&gt;Hasta que finalmente vi que había una función que podría facilitarme un poco las cosas: &lt;a title="Substring Transact_SQL" href="http://j.mp/QXP7LD" target="_blank" rel="noopener"&gt;Substring()&lt;/a&gt;.&lt;/p&gt;&#10;&lt;p&gt;Así que este es el código como finalmente quedó:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;declare&lt;/span&gt; &lt;span style="color:#f92672"&gt;@&lt;/span&gt;fecha varchar(&lt;span style="color:#66d9ef"&gt;MAX&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;declare&lt;/span&gt; &lt;span style="color:#f92672"&gt;@&lt;/span&gt;archivo varchar(&lt;span style="color:#66d9ef"&gt;MAX&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;set&lt;/span&gt; &lt;span style="color:#f92672"&gt;@&lt;/span&gt;fecha &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;SUBSTRING&lt;/span&gt;(&lt;span style="color:#66d9ef"&gt;Convert&lt;/span&gt;(Varchar(&lt;span style="color:#ae81ff"&gt;10&lt;/span&gt;), GetDate(),&lt;span style="color:#ae81ff"&gt;105&lt;/span&gt;),&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;,&lt;span style="color:#ae81ff"&gt;2&lt;/span&gt;)&lt;span style="color:#f92672"&gt;+&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;SUBSTRING&lt;/span&gt;(&lt;span style="color:#66d9ef"&gt;Convert&lt;/span&gt;(Varchar(&lt;span style="color:#ae81ff"&gt;10&lt;/span&gt;), GetDate(),&lt;span style="color:#ae81ff"&gt;105&lt;/span&gt;),&lt;span style="color:#ae81ff"&gt;4&lt;/span&gt;,&lt;span style="color:#ae81ff"&gt;2&lt;/span&gt;)&lt;span style="color:#f92672"&gt;+&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;SUBSTRING&lt;/span&gt;(&lt;span style="color:#66d9ef"&gt;Convert&lt;/span&gt;(Varchar(&lt;span style="color:#ae81ff"&gt;10&lt;/span&gt;), GetDate(),&lt;span style="color:#ae81ff"&gt;105&lt;/span&gt;),&lt;span style="color:#ae81ff"&gt;7&lt;/span&gt;,&lt;span style="color:#ae81ff"&gt;4&lt;/span&gt;)&lt;span style="color:#f92672"&gt;+&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#39;_&amp;#39;&lt;/span&gt;&lt;span style="color:#f92672"&gt;+&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;SUBSTRING&lt;/span&gt;(&lt;span style="color:#66d9ef"&gt;CONVERT&lt;/span&gt;(Varchar(&lt;span style="color:#ae81ff"&gt;10&lt;/span&gt;), GetDate(),&lt;span style="color:#ae81ff"&gt;108&lt;/span&gt;),&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;,&lt;span style="color:#ae81ff"&gt;2&lt;/span&gt;)&lt;span style="color:#f92672"&gt;+&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;SUBSTRING&lt;/span&gt;(&lt;span style="color:#66d9ef"&gt;CONVERT&lt;/span&gt;(Varchar(&lt;span style="color:#ae81ff"&gt;10&lt;/span&gt;), GetDate(),&lt;span style="color:#ae81ff"&gt;108&lt;/span&gt;),&lt;span style="color:#ae81ff"&gt;4&lt;/span&gt;,&lt;span style="color:#ae81ff"&gt;2&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;set&lt;/span&gt; &lt;span style="color:#f92672"&gt;@&lt;/span&gt;archivo &lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#39;C:\Ruta\del\Directorio\Base_De_Datos_&amp;#39;&lt;/span&gt;&lt;span style="color:#f92672"&gt;+@&lt;/span&gt;fecha&lt;span style="color:#f92672"&gt;+&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#39;.bak&amp;#39;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;BACKUP &lt;span style="color:#66d9ef"&gt;DATABASE&lt;/span&gt; Base_De_Datos_Respaldada&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;TO&lt;/span&gt; DISK &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#f92672"&gt;@&lt;/span&gt;archivo&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;WITH&lt;/span&gt; FORMAT,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; MEDIANAME &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;D_SQLServerBackups&amp;#39;&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; NAME &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;Full Backup of ERP2012_Pycsur&amp;#39;&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;GO&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;El anterior archivo lo pueden guardar en un archivo de texto &amp;ldquo;archivo.sql&amp;rdquo; y se manda a llamar así:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sqlcmd -S Servidor&lt;span style="color:#ae81ff"&gt;\I&lt;/span&gt;nstancia_BD -i C:&lt;span style="color:#ae81ff"&gt;\R&lt;/span&gt;uta&lt;span style="color:#ae81ff"&gt;\a&lt;/span&gt;rchivo.sql&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Ese último comando lo pueden poner en el programador de tareas y listo, proceso automatizado ñ_ñ&lt;/p&gt;&#10;</description></item><item><title>Redimensionar imágenes con Imagemagick</title><link>https://hbautista.com/p/redimencionar-imagenes-con-imagemagick/</link><pubDate>Tue, 31 May 2011 20:29:17 +0000</pubDate><guid>https://hbautista.com/p/redimencionar-imagenes-con-imagemagick/</guid><description>&lt;img src="https://hbautista.com/images/2011/Imagemagick-logo.png" alt="Featured image of post Redimensionar imágenes con Imagemagick" /&gt;&lt;p&gt;Hace ya un buen tiempo en mi blog anterior había hecho algunos scripts para reducir de tamaño las imágenes que subía en Flickr o en ese blog.&lt;/p&gt;&#10;&lt;p&gt;Como ese blog pasó a la historia junto con los artículos que tenía, las dos entradas relacionadas con lo mismo desaparecieron. Hace como una semana me preguntaron el porqué no escribo tan seguido y comenté que principalmente porque a veces no encuentro sobre qué escribir.&lt;/p&gt;&#10;&lt;p&gt;Y de ahí surgió el comentario sobre este tema y le mencioné que ya había resuelto ese detalle, aunque ahora mismo ya no use dichos scripts.&lt;/p&gt;&#10;&lt;p&gt;Pues bien y después de rebuscar entre las cosas que tenía almacenadas por fin encontré no uno, sino varios scripts sobre el tema. Pondré los primeros que usaba y finalmente el que para mi gusto fue el que finalmente usé masivamente debido a que estaba más completo.&lt;/p&gt;&#10;&lt;h2 id="primeros-scripts"&gt;Primeros scripts&#10;&lt;/h2&gt;&lt;p&gt;El primero le puse el nombre de &amp;ldquo;achicar&amp;rdquo; y es:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#!/bin/bash&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Pequeño script que cambia la resolución de la imagenes (con extension PNG) al 27% del tamaño original.&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Realizado por: Hbautista, hbautista@usoli.org&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; file in &lt;span style="color:#66d9ef"&gt;$(&lt;/span&gt; ls *.JPG &lt;span style="color:#66d9ef"&gt;)&lt;/span&gt;; &lt;span style="color:#66d9ef"&gt;do&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;convert $file -resize 27% foto_$file&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;done&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;echo “Listo!&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Como verán es simple y tiene la limitante que sólo funciona con fotos que tengan la extensión jpg en mayúsculas, debido a que cuando pasaba las fotos de mi cámara a la computadora las tenía así.&lt;/p&gt;&#10;&lt;p&gt;Las fotos resultantes quedaban en el mismo directorio al igual que las originales, quedando las &amp;ldquo;nuevas&amp;rdquo; con &amp;ldquo;foto_&amp;rdquo; al inicio del nombre de cada archivo.&lt;/p&gt;&#10;&lt;p&gt;En el caso de pantallazos y otros archivos o fotos que tenían la extensión .png lo modifiqué resultando el script llamado &amp;ldquo;reducir&amp;rdquo;:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#!/bin/bash&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Pequeño script que cambia la resolución de la imagenes (con extension PNG) al 50% del tamaño original.&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Realizado por: Hbautista, hbautista@usoli.org&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; file in &lt;span style="color:#66d9ef"&gt;$(&lt;/span&gt; ls *.png &lt;span style="color:#66d9ef"&gt;)&lt;/span&gt;; &lt;span style="color:#66d9ef"&gt;do&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;convert $file -resize 50% foto_$file&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;done&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;echo “Listo!&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Luego de eso y buscando un poco más usé durante un tiempo este otro que lo llamé &amp;ldquo;quitar-calidad&amp;rdquo;:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#/usr/bin&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mkdir pt&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; N in *; &lt;span style="color:#66d9ef"&gt;do&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;convert -compress jpeg -quality &lt;span style="color:#ae81ff"&gt;44&lt;/span&gt; -enhance -font Bookman-DemiItalic  -fill white -pointsize &lt;span style="color:#ae81ff"&gt;14&lt;/span&gt; -draw &lt;span style="color:#e6db74"&gt;&amp;#34;text 680,500 &amp;#39;hbautista&amp;#39;&amp;#34;&lt;/span&gt; $N pt/$N; &lt;span style="color:#66d9ef"&gt;done&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ls -l pt/&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Aquí ya no importaba la extensión y a diferencia de los dos primeros, en este caso lo que hacía era reducir la calidad al 44% de la imagen original, crear un subdirectorio dentro del directorio en donde se ejecutase el script y añadir la marca de agua &amp;ldquo;hbautista.usoli.org&amp;rdquo; en las fotografías y poniendo las reducidas y con la marca de agua en el subdirectorio &amp;ldquo;pt&amp;rdquo;.&lt;/p&gt;&#10;&lt;p&gt;[foto_coapilla&lt;/p&gt;&#10;&lt;p&gt;&amp;quot; data-image-caption=&amp;quot;&amp;quot; data-large-file=&amp;quot;/images/2011/foto_coapilla-1.jpg&amp;quot; class=&amp;ldquo;aligncenter size-medium wp-image-579&amp;rdquo; title=&amp;ldquo;foto_coapilla&amp;rdquo; src=&amp;quot;/images/2011/foto_coapilla-1.jpg&amp;quot; alt=&amp;ldquo;foto_coapilla&amp;rdquo; width=&amp;ldquo;300&amp;rdquo; height=&amp;ldquo;225&amp;rdquo; srcset=&amp;quot;/images/2011/foto_coapilla-1.jpg 300w, /images/2011/foto_coapilla-1.jpg 768w, /images/2011/foto_coapilla-1.jpg 1024w&amp;quot; sizes=&amp;ldquo;auto, (max-width: 300px) 100vw, 300px&amp;rdquo; /&amp;gt;]&lt;a class="link" href="https://hbautista.com/images/2011/foto_coapilla-1.jpg" &gt;1&lt;/a&gt;&lt;/p&gt;&#10;&lt;h2 id="script-final"&gt;Script final&#10;&lt;/h2&gt;&lt;p&gt;Luego hice una mezcla de los primeros scripts con el último para que reduciera el tamaño y además le pusiera la marca de agua, pero digamos que era desperdicio de código porque nada más junte los tres scripts. Finalmente éste fue el script final que a mi gusto estaba bastante funcional, le puse el nombre de &amp;ldquo;blogfoto&amp;rdquo;:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#!/bin/bash&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# blogfoto&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Pequeño script que cambia la resolución de la imagenes del tamaño original a 800*600. Usa ImageMagick&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Además de reducir la calidad de la imagen resultante.&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Realizado por: Hbautista, hbautista@usoli.org&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# http://blog.hbautista.com/linux/redimencionar-imagenes-con-imagemagick/&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Primero nos aseguramos que la extensión esté en minúsculas y creamos fotoblog&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;rename &lt;span style="color:#e6db74"&gt;&amp;#39;s/.JPG/.jpg/&amp;#39;&lt;/span&gt; *.JPG&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mkdir fotoblog&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#Empezamos el ciclo con las fotos de extensión jpg para reducirlo a 800*600.&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#Además de poner las fotos dentro de fotoblog&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; file in &lt;span style="color:#66d9ef"&gt;$(&lt;/span&gt; ls *.jpg &lt;span style="color:#66d9ef"&gt;)&lt;/span&gt;; &lt;span style="color:#66d9ef"&gt;do&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;convert -size 2048x1536 $file -thumbnail 800x600 fotoblog/foto_$file&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;done&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;echo “Listo!&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Ahora procedemos a comprimir más las imágenes dentro de fotoblog&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cd fotoblog&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; N in *; &lt;span style="color:#66d9ef"&gt;do&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;convert -compress jpeg -quality &lt;span style="color:#ae81ff"&gt;55&lt;/span&gt; -enhance -font Bookman-DemiItalic  -fill white -pointsize &lt;span style="color:#ae81ff"&gt;14&lt;/span&gt; -draw &lt;span style="color:#e6db74"&gt;&amp;#34;text 680,500 &amp;#39;hbautista&amp;#39;&amp;#34;&lt;/span&gt; $N $N;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;done&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;echo &lt;span style="color:#e6db74"&gt;&amp;#34;Hemos terminado!&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Ahora bien, primeramente usando el comando rename pasamos de mayúsculas a minúsculas las extensiones, si es que están así. Creamos el directorio &amp;ldquo;fotoblog&amp;rdquo; y hacemos que las fotos sean reducidas a un tamaño de 800×600 y queden con el nombre de foto_loquesea.jpg dentro de ese directorio.&lt;/p&gt;&#10;&lt;p&gt;Una vez que haya terminado ese proceso que depende de cuántas fotografías estén dentro del directorio lo que hace es que accede al directorio fotoblog y ahí procede a añadirle la marca de agua.&lt;/p&gt;&#10;&lt;h2 id="cómo-usar-el-script"&gt;¿Cómo usar el script?&#10;&lt;/h2&gt;&lt;p&gt;foto_chiapatuit&lt;/p&gt;&#10;&lt;p&gt;&amp;quot; data-image-caption=&amp;quot;&amp;quot; data-large-file=&amp;quot;/images/2011/foto_chiapatuit-1.jpg&amp;quot; class=&amp;ldquo;aligncenter size-medium wp-image-580&amp;rdquo; src=&amp;quot;/images/2011/foto_chiapatuit-1.jpg&amp;quot; alt=&amp;quot;&amp;quot; width=&amp;ldquo;300&amp;rdquo; height=&amp;ldquo;230&amp;rdquo; srcset=&amp;quot;/images/2011/foto_chiapatuit-1.jpg 300w, /images/2011/foto_chiapatuit-1.jpg 768w, /images/2011/foto_chiapatuit-1.jpg 1024w&amp;quot; sizes=&amp;ldquo;auto, (max-width: 300px) 100vw, 300px&amp;rdquo; /&amp;gt;&lt;/p&gt;&#10;&lt;p&gt;Copiar el contenido del script final (blogfoto) en tu editor de texto favorito y adecuarlo a tus necesidades, es decir cambiar el nombre del subdirectorio, el tipo de letra o cambiar el texto de la marca de agua y guardarlo con el nombre de &amp;ldquo;loquesea.sh&amp;rdquo; para este ejemplo lo dejaré con el nombre original &lt;strong&gt;blogfoto.sh&lt;/strong&gt; y lo dejaré en el directorio raíz de mi /home para luego como root copiarlo a /usr/local/bin y darle los respectivos permisos de ejecución:&lt;/p&gt;&#10;&lt;p&gt;Pant_script_foto&lt;/p&gt;&#10;&lt;p&gt;&amp;quot; data-image-caption=&amp;quot;&amp;quot; data-large-file=&amp;quot;/images/2011/Pant_script_foto-1.png&amp;quot; class=&amp;ldquo;aligncenter size-medium wp-image-582&amp;rdquo; src=&amp;quot;/images/2011/Pant_script_foto-1.png&amp;quot; alt=&amp;quot;&amp;quot; width=&amp;ldquo;300&amp;rdquo; height=&amp;ldquo;147&amp;rdquo; srcset=&amp;quot;/images/2011/Pant_script_foto-1.png 300w, /images/2011/Pant_script_foto-1.png 768w, /images/2011/Pant_script_foto-1.png 944w&amp;quot; sizes=&amp;ldquo;auto, (max-width: 300px) 100vw, 300px&amp;rdquo; /&amp;gt;&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;root@luke:/home/hbautista# cp blogfoto.sh /usr/local/bin/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;root@luke:/home/hbautista# chmod +x /usr/local/bin/blogfoto.sh&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;root@luke:/home/hbautista#&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Luego con tu usuario normal ubicarte en el directorio que tiene las fotos y ejecutar el script:&lt;/p&gt;&#10;&lt;p&gt;Pant_scriptfoto2&lt;/p&gt;&#10;&lt;p&gt;&amp;quot; data-image-caption=&amp;quot;&amp;quot; data-large-file=&amp;quot;/images/2011/Pant_scriptfoto2-1.png&amp;quot; class=&amp;ldquo;aligncenter size-medium wp-image-583&amp;rdquo; src=&amp;quot;/images/2011/Pant_scriptfoto2-1.png&amp;quot; alt=&amp;quot;&amp;quot; width=&amp;ldquo;300&amp;rdquo; height=&amp;ldquo;147&amp;rdquo; srcset=&amp;quot;/images/2011/Pant_scriptfoto2-1.png 300w, /images/2011/Pant_scriptfoto2-1.png 768w, /images/2011/Pant_scriptfoto2-1.png 944w&amp;quot; sizes=&amp;ldquo;auto, (max-width: 300px) 100vw, 300px&amp;rdquo; /&amp;gt;&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;hbautista@luke:~$ cd Imágenes/Taller_Foto/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;hbautista@luke:~/Imágenes/Taller_Foto$ blogfoto.sh&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Can&lt;span style="color:#960050;background-color:#1e0010"&gt;&amp;#39;&lt;/span&gt;t rename *.JPG *.jpg: No existe el fichero o el directorio&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;“Listo!&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Hemos terminado!&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;hbautista@luke:~/Imágenes/Taller_Foto$&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;El resultado se ve como esto:&lt;/p&gt;&#10;&lt;p&gt;[Luces&lt;/p&gt;&#10;&lt;p&gt;&amp;quot; data-image-caption=&amp;quot;&amp;quot; data-large-file=&amp;quot;/images/2011/foto_dsc07862-1.jpg&amp;quot; class=&amp;ldquo;aligncenter size-medium wp-image-581&amp;rdquo; title=&amp;ldquo;Luces&amp;rdquo; src=&amp;quot;/images/2011/foto_dsc07862-1.jpg&amp;quot; alt=&amp;ldquo;Luces&amp;rdquo; width=&amp;ldquo;300&amp;rdquo; height=&amp;ldquo;201&amp;rdquo; srcset=&amp;quot;/images/2011/foto_dsc07862-1.jpg 300w, /images/2011/foto_dsc07862-1.jpg 768w, /images/2011/foto_dsc07862-1.jpg 800w&amp;quot; sizes=&amp;ldquo;auto, (max-width: 300px) 100vw, 300px&amp;rdquo; /&amp;gt;]&lt;a class="link" href="https://hbautista.com/images/2011/foto_dsc07862-1.jpg" &gt;2&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;Espero que les sirva&lt;/p&gt;&#10;&lt;p&gt;Enlaces:&lt;/p&gt;&#10;&lt;p&gt;Jugando con Imagemagick&lt;/p&gt;&#10;&lt;p&gt;&lt;a title="ImageMagick manipulando centenares de imagenes" href="http://bit.ly/mrOOFK" target="_blank" rel="noopener"&gt;ImageMagick manipulando centenares de imágenes&lt;/a&gt;&lt;/p&gt;&#10;</description></item><item><title>Compartir internet</title><link>https://hbautista.com/p/compartir-internet/</link><pubDate>Fri, 27 May 2011 20:05:36 +0000</pubDate><guid>https://hbautista.com/p/compartir-internet/</guid><description>&lt;img src="https://hbautista.com/images/2011/firewall_esquema-1.gif" alt="Featured image of post Compartir internet" /&gt;&lt;p&gt;Recientemente una persona me preguntó la forma de compartir internet usando &lt;strong&gt;Gnu/Linux&lt;/strong&gt;, y pues se me ha ocurrido comentar la forma más simple de hacerlo mediante &lt;strong&gt;iptables&lt;/strong&gt;.&lt;/p&gt;&#10;&lt;p&gt;Cabe aclarar que existen mejores formas y también de hacer cosas con restricciones, de este tema no trata este pequeño documento.&lt;/p&gt;&#10;&lt;p&gt;[Firewall&lt;/p&gt;&#10;&lt;p&gt;&amp;quot; data-image-caption=&amp;quot;&amp;quot; data-large-file=&amp;quot;/images/2011/firewall_esquema-1.gif&amp;quot; class=&amp;ldquo;alignleft size-medium wp-image-572&amp;rdquo; title=&amp;ldquo;Firewall&amp;rdquo; src=&amp;quot;/images/2011/firewall_esquema-1.gif&amp;quot; alt=&amp;ldquo;Firewall&amp;rdquo; width=&amp;ldquo;300&amp;rdquo; height=&amp;ldquo;155&amp;rdquo; /&amp;gt;]&lt;a class="link" href="https://hbautista.com/images/2011/firewall_esquema-1.gif" &gt;1&lt;/a&gt;&lt;br&gt;&#10;Si usan un sistema como &lt;strong&gt;Redhat&lt;/strong&gt; y derivados, lo siguiente puede ir dentro del archivo &lt;strong&gt;/etc/rc.local&lt;/strong&gt; para que sea ejecutado al iniciar la computadora, o bien crear un archivo que se llame &lt;strong&gt;/etc/init.d/firewall&lt;/strong&gt; en otros sistemas operativos como &lt;strong&gt;Debian&lt;/strong&gt; y sus derivados.&lt;/p&gt;&#10;&lt;p&gt;#Vaciamos el contenido de iptables&#10;iptables -F&#10;iptables -Z&#10;iptables -t nat -F&lt;/p&gt;&#10;&lt;p&gt;#Hacemos un masquerading&#10;iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE&lt;/p&gt;&#10;&lt;p&gt;#Aceptamos las conexiones&#10;iptables -A INPUT -p TCP -m state &amp;ndash;state RELATED -j ACCEPT&lt;/p&gt;&#10;&lt;h1 id="habilitar-el-ip-forwarding"&gt;habilitar el ip forwarding&#10;&lt;/h1&gt;&lt;p&gt;echo 1 &amp;gt; /proc/sys/net/ipv4/ip_forward&lt;/pre&gt;&lt;/p&gt;&#10;&lt;p&gt;Con ese sencillo script tienen salida a internet los que estén en tu red interna del tipo &lt;strong&gt;192.168.1.x&lt;/strong&gt;, máscara de subred &lt;strong&gt;255.255.255.0&lt;/strong&gt;, tu puerta de enlace puede ser &lt;strong&gt;192.168.1.1&lt;/strong&gt; siempre y cuando sea la de tu servidor y los dns que más te acomoden (&lt;strong&gt;200.33.126.201&lt;/strong&gt;, &lt;strong&gt;200.33.146.193&lt;/strong&gt; son los de Telmex).&lt;/p&gt;&#10;&lt;p&gt;Saludos y espero que a alguien le sirva.&lt;/p&gt;&#10;</description></item><item><title>Script de respaldo</title><link>https://hbautista.com/p/script-de-respaldo/</link><pubDate>Wed, 16 Jun 2010 21:21:59 +0000</pubDate><guid>https://hbautista.com/p/script-de-respaldo/</guid><description>&lt;p&gt;Este script lo hice hace ya un buen tiempo y que ayer estaba modificándolo y a partir de éste crear otros, que finalmente en un descuido borré todo mi home y con los scripts igual..&lt;/p&gt;&#10;&lt;p&gt;Como lo he mencionado varias veces google es el chamuko. ¿Porqué? Realicé una búsqueda porque recuerdo haber subido este script u alguno parecido en algún sitio y lo encontré ñ_ñ para mi fortuna puesto que no tenía en ningún lado respaldo de dicho script.&lt;/p&gt;&#10;&lt;p&gt;Lo publico por si a alguien le puede servir de guía o se encuentra en alguna situación como la mía y para que quede registrada la modificación que hice&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#!/bin/sh&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Script pitero de respaldo de la BD del Serape&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# serape.sh&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Hecho por: hbautista ;-)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Fecha: 20 de Julio de 2006&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Modificado: 16 de Junio de 2010 porque lo borré :-(&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# http://hbautista.com&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Mensaje de inicio&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;echo -e &lt;span style="color:#e6db74"&gt;&amp;#34;\nIniciando Script&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Aqui vemos la fecha y hora de ejecucion de este script, nuestras variables&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Dia_Mes_Año_Hora_Minuto&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;fecha&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;$(&lt;/span&gt;date +%d%B%Y-%H.%M&lt;span style="color:#66d9ef"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Para saber el mes en el que estamos&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mes&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;$(&lt;/span&gt;date +%B&lt;span style="color:#66d9ef"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# El año&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;anio&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;$(&lt;/span&gt;date +%Y&lt;span style="color:#66d9ef"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Nombre de la BD&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;nombre&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;Serape_&lt;/span&gt;$fecha&lt;span style="color:#e6db74"&gt;.mdb&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#Aqui es donde definimos que se cree las carpetas por mes&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;carpeta&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;/home/respaldos/Serape/&lt;/span&gt;$anio&lt;span style="color:#e6db74"&gt;/&lt;/span&gt;$mes&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;carpeta2&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;/home/respaldos/Serape/&lt;/span&gt;$anio&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Verificamos que la carpeta del año esté creada&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#f92672"&gt;[&lt;/span&gt; -d &lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;$carpeta2&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt; &lt;span style="color:#f92672"&gt;]&lt;/span&gt;; &lt;span style="color:#66d9ef"&gt;then&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;echo -e &lt;span style="color:#e6db74"&gt;&amp;#34;\nDirectorio &lt;/span&gt;$carpeta2&lt;span style="color:#e6db74"&gt; ya creado&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;else&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;echo -e &lt;span style="color:#e6db74"&gt;&amp;#34;\nCreando &lt;/span&gt;$carpeta2&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mkdir $carpeta2&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;fi&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Comparamos que la carpeta final existe, de otro modo se crea&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#f92672"&gt;[&lt;/span&gt; -d &lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;$carpeta&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt; &lt;span style="color:#f92672"&gt;]&lt;/span&gt;; &lt;span style="color:#66d9ef"&gt;then&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;echo -e &lt;span style="color:#e6db74"&gt;&amp;#34;\nDirectorio &lt;/span&gt;$carpeta&lt;span style="color:#e6db74"&gt; ya creado&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;else&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;echo -e &lt;span style="color:#e6db74"&gt;&amp;#34;\nCreando &lt;/span&gt;$carpeta&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mkdir $carpeta&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;fi&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#Aqui copiamos la bd a la carpeta destino, despues &amp;#34;entramos&amp;#34; a esa carpeta&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cp /home/serape/Serape.mdb $carpeta&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cd $carpeta&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#Renombramos la bd para que incluya fecha y hora de ejecucion del script&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mv Serape.mdb $nombre&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#Comprimimos la bd renombrada con 7zip, que tiene el nivel de compresion mas alto.&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;7za a -bd -y -mx&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;5&lt;/span&gt; $nombre.7z $nombre&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#Eliminamos la bd de datos original&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;rm -f $nombre&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Mensaje final&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;echo -e &lt;span style="color:#e6db74"&gt;&amp;#34;\nTerminado&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;El nombre que le asigné se llama &lt;strong&gt;serape.sh&lt;/strong&gt; y le asigné permisos de ejecución y lo copié a &lt;strong&gt;/usr/local/bin&lt;/strong&gt; y además lo tengo en el &lt;strong&gt;cron&lt;/strong&gt; para que lo haga del diario.&lt;/p&gt;&#10;&lt;p&gt;Nota: Uso &lt;strong&gt;7zip&lt;/strong&gt; porque me pareció adecuado debido a que es un che archivito .mdb, aunque claro si quisieran más de un archivo y conservar permisos de usuario y de archivo es más recomendable usar tar&lt;/p&gt;</description></item><item><title>Flac to Mp3</title><link>https://hbautista.com/p/flac-to-mp3/</link><pubDate>Mon, 09 Nov 2009 20:13:25 +0000</pubDate><guid>https://hbautista.com/p/flac-to-mp3/</guid><description>&lt;p&gt;Resulta que estaba checando a Mastodonte y me topé con que tenía un par de carpetas con audio (canciones pues) pero éstas estaban en formato &lt;a title="Flac" href="http://es.wikipedia.org/wiki/Free_Lossless_Audio_Codec" target="_blank"&gt;FLAC&lt;/a&gt; 🙁&lt;/p&gt;&#10;&lt;p&gt;Y pues a pesar de que tengo los nautilus-scripts de &lt;a title="Javielinux" href="http://javielinux.com" target="_blank"&gt;Javielinux&lt;/a&gt; nomás no estaba precisamente esto que yo buscaba 🙂&lt;/p&gt;&#10;&lt;p&gt;Pero Google es el chamuko :O y todo lo sabe :O y básicamente me encontré con dos soluciones 😉&lt;/p&gt;&#10;&lt;p&gt;La primera tomada de acá &lt;a href="http://bit.ly/1Yqi9N" target="_blank"&gt;&lt;a class="link" href="http://bit.ly/1Yqi9N" target="_blank" rel="noopener"&#10; &gt;http://bit.ly/1Yqi9N&lt;/a&gt;&lt;/a&gt; y consiste básicamente en un pequeño script y necesitas los paquetes &lt;a title="Flac encoder" href="http://flac.sourceforge.net/" target="_blank"&gt;flac&lt;/a&gt; y &lt;a title="Lame encoder" href="http://lame.sourceforge.net/" target="_blank"&gt;lame&lt;/a&gt; para que funcione 🙂 y dicho script es el siguiente:&lt;/p&gt;&#10;&#10; &lt;blockquote&gt;&#10; &lt;p&gt;for file in *.flac; do $(flac -cd &amp;ldquo;$file&amp;rdquo; | lame -h – &amp;ldquo;${file%.flac}.mp3&amp;rdquo;); done&lt;/p&gt;&#10;&#10; &lt;/blockquote&gt;&#10;&lt;p&gt;Aunque es bueno, simplemente me gustó más el segundo script tomado de acá &lt;a href="http://bit.ly/11vNAp" target="_blank"&gt;&lt;a class="link" href="http://bit.ly/11vNAp" target="_blank" rel="noopener"&#10; &gt;http://bit.ly/11vNAp&lt;/a&gt;&lt;/a&gt; que ya lo subí acá –&amp;gt; &lt;a class="link" href="http://bit.ly/4uUoqq" target="_blank" rel="noopener"&#10; &gt;http://bit.ly/4uUoqq&lt;/a&gt; para todo aquél que quiera descargarlo y ya, lo deben de copiar (preferentemente) en &lt;strong&gt;/usr/local/bin/&lt;/strong&gt; por aquello de que son scripts locales, hechos por nosotros o que los hemos conseguidos en sitios como los que he mencionado 😉&lt;/p&gt;&#10;&lt;p&gt;Básicamente el contenido del script es el siguiente:&lt;/p&gt;&#10;&#10; &lt;blockquote&gt;&#10; &lt;p&gt;#!/bin/bash&lt;br&gt;&#10;#########################################################&lt;br&gt;&#10;# Flac to Mp3 Conversion Software #&lt;br&gt;&#10;# Script Created by Nick Sklavenitis #&lt;br&gt;&#10;# Date: September 18 2007 #&lt;br&gt;&#10;#########################################################&lt;br&gt;&#10;# modify the lame options to your preference example change -b 320 to -b 128 or -b 192 or -b 256&lt;br&gt;&#10;lame_opts=&amp;quot; –vbr-new -V 2 -b 320 &amp;quot;&lt;/p&gt;&#10;&lt;p&gt;# Creates the loop that allows more than 1 file to be specified, Can use single file name or example *.flac&lt;br&gt;&#10;for x in &amp;ldquo;${@}&amp;rdquo;&lt;br&gt;&#10;do&lt;br&gt;&#10;FLAC=${x}&lt;br&gt;&#10;MP3=`basename &amp;ldquo;${FLAC%.flac}.mp3″`&lt;br&gt;&#10;[ -r &amp;ldquo;$FLAC&amp;rdquo; ] || { echo can not read file &amp;quot;$FLAC&amp;quot; &amp;gt;&amp;amp;1 ; exit 1 ; } ;&lt;/p&gt;&#10;&lt;p&gt;#This section pulls the Tag info from flac and stores it as a variable.&lt;/p&gt;&#10;&lt;p&gt;TITLE=&amp;rdquo;`metaflac –show-tag=TITLE &amp;ldquo;$FLAC&amp;rdquo; | awk -F = &amp;lsquo;{ printf($2) }&amp;rsquo;`&amp;quot;&lt;br&gt;&#10;ALBUM=&amp;quot;`metaflac –show-tag=ALBUM &amp;ldquo;$FLAC&amp;rdquo; | awk -F = &amp;lsquo;{ printf($2) }&amp;rsquo;`&amp;quot;&lt;br&gt;&#10;ARTIST=&amp;quot;`metaflac –show-tag=ARTIST &amp;ldquo;$FLAC&amp;rdquo; | awk -F = &amp;lsquo;{ printf($2) }&amp;rsquo;`&amp;quot;&lt;br&gt;&#10;TRACKNUMBER=&amp;quot;`metaflac –show-tag=TRACKNUMBER &amp;ldquo;$FLAC&amp;rdquo; | awk -F = &amp;lsquo;{ printf($2) }&amp;rsquo;`&amp;quot;&lt;br&gt;&#10;GENRE=&amp;quot;`metaflac –show-tag=GENRE &amp;ldquo;$FLAC&amp;rdquo; | awk -F = &amp;lsquo;{ printf($2) }&amp;rsquo;`&amp;quot;&lt;br&gt;&#10;COMMENT=&amp;quot;`metaflac –show-tag=COMMENT &amp;ldquo;$FLAC&amp;rdquo; | awk -F = &amp;lsquo;{ printf($2) }&amp;rsquo;`&amp;quot;&lt;br&gt;&#10;DATE=&amp;quot;`metaflac –show-tag=DATE &amp;ldquo;$FLAC&amp;rdquo; | awk -F = &amp;lsquo;{ printf($2) }&amp;rsquo;`&amp;quot;&lt;/p&gt;&#10;&lt;p&gt;#This section handles the conversion of the Flac file to MP3&lt;/p&gt;&#10;&lt;p&gt;flac -dc &amp;ldquo;$FLAC&amp;rdquo; | lame${lame_opts} \&lt;br&gt;&#10;–tt &amp;ldquo;$TITLE&amp;rdquo; \&lt;br&gt;&#10;–tn &amp;ldquo;$TRACKNUMBER&amp;rdquo; \&lt;br&gt;&#10;–tg &amp;ldquo;$GENRE&amp;rdquo; \&lt;br&gt;&#10;–ty &amp;ldquo;$DATE&amp;rdquo; \&lt;br&gt;&#10;–ta &amp;ldquo;$ARTIST&amp;rdquo; \&lt;br&gt;&#10;–tl &amp;ldquo;$ALBUM&amp;rdquo; \&lt;br&gt;&#10;–add-id3v2 \&lt;br&gt;&#10;– &amp;ldquo;$MP3&amp;rdquo;&lt;/p&gt;&#10;&lt;p&gt;done&lt;/p&gt;&#10;&#10; &lt;/blockquote&gt;&#10;&lt;p&gt;Y que les puedo decir, aunque deja los archivos MP3 un poco más &amp;ldquo;gordos&amp;rdquo; en cuanto a espacio que el script anterior, pueden usarlo con un solo archivo o darle *.flac 😉 Ahhh… éste también necesita de los paquetes &lt;a title="Flac encoder" href="http://flac.sourceforge.net/" target="_blank"&gt;flac&lt;/a&gt; y &lt;a title="Lame encoder" href="http://lame.sourceforge.net/" target="_blank"&gt;lame&lt;/a&gt; para que funcione 🙂&lt;/p&gt;&#10;&lt;p&gt;En mi caso y como les dije puse el script en &lt;strong&gt;/usr/local/bin/&lt;/strong&gt; y le di permisos de ejecución:&lt;/p&gt;&#10;&#10; &lt;blockquote&gt;&#10; &lt;p&gt;root@soporte:/home/hbautista# chmod +x /usr/local/bin/Flac2Mp3.sh&lt;/p&gt;&#10;&#10; &lt;/blockquote&gt;&#10;&lt;p&gt;Y funciona muy bien 🙂&lt;/p&gt;</description></item></channel></rss>