tag:blogger.com,1999:blog-63018131063985659502024-03-04T20:08:57.292-08:00My Blog. Gnu/Linux!Braianhttp://www.blogger.com/profile/13742241213281007972noreply@blogger.comBlogger173125tag:blogger.com,1999:blog-6301813106398565950.post-4010101147071982002010-07-27T09:40:00.001-07:002010-07-27T10:42:27.892-07:00Minimal interfaz Firefox en UbuntuHace unos meses estaba usando <a href="http://en.wikipedia.org/wiki/Chromium_(web_browser)">Chromiun</a> en Ubuntu 10.04, ya que sentía una diferencia notable comparado a Firefox tanto en rendimiendo como en la interfaz.<div><br /></div><div>Pero hoy me he tomado el tiempo de buscar y modificar la apariencia, y de esta manera logar una interfaz sencilla, amigable y limpia en Firefox y no extrañar a <a href="http://en.wikipedia.org/wiki/Chromium_(web_browser)">Chromiun</a>. Además si <a href="http://braianet.blogspot.com/2010/07/firefox-lento-en-ubuntu-aca-la-solucion.html">aumentás la velocidad de carga en las páginas</a>, realmente el Oso panda rojo volverá a ser tu navegador preferido ;)</div><div><br /></div><div>Pasos:</div><div style="text-align: center;"><br /></div><div>1. Integramos el botón de parar carga y recargar página con <a href="https://addons.mozilla.org/en-US/firefox/addon/313/?collection_uuid=48fb4b5b-dcb6-240e-fc05-22786c3b0f48">Stop-or-Reload Button</a>.</div><div>2. Integramos en la barra de direcciones el estado de la carga de la página, dándole un estilo Safari con <a href="https://addons.mozilla.org/en-US/firefox/addon/1951/?collection_uuid=48fb4b5b-dcb6-240e-fc05-22786c3b0f48">Fission</a>.</div><div>3. Escondemos la barra de menús con <a href="https://addons.mozilla.org/en-US/firefox/addon/4762/?collection_uuid=3439f53e-f7f9-4bfd-079d-f4f403fc9f93">Hide Menubar</a>, cuando la precisemos, utilizaremos la tecla ALT.</div><div>4. Integramos la barra de búsqueda con la barra de direcciones con <a href="https://addons.mozilla.org/en-US/firefox/addon/8823/?collection_uuid=3439f53e-f7f9-4bfd-079d-f4f403fc9f93">Omnibar</a></div><div>5. Escondemos la barra de estado con <a href="https://addons.mozilla.org/en-US/firefox/addon/1530/">autoHideStatusBar</a>.</div><div>6. Eliminamos la barra de título dándole un parecido a Chrome con <a href="https://addons.mozilla.org/en-US/firefox/addon/9256/">Hide Caption</a>.</div><div>7. Cuando creamos una nueva pestaña, Firefox nos muestra una en blanco, con esta extensión tendremos las últimas páginas listas para se</div><div>r vistas. <a href="https://addons.mozilla.org/en-US/firefox/addon/10828/">New Tab King</a>.</div><div>8. Y por último una extensión que nos permitirá manejar muchísimas opciones en las pestañas, la misma se llama <a href="https://addons.mozilla.org/en-US/firefox/addon/4838/">Multiple Tab Handler</a>.</div><div><br /></div><div>Ahora el resultado!:</div><div style="text-align: left;"><span class="Apple-style-span" style="color: rgb(0, 0, 238); -webkit-text-decorations-in-effect: underline; "><div style="text-align: center;"><br /></div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-xJjvfDakHIQ0qXP0fcLwCsstRkXBOQJ6SCEx9tjHInX4ZauOVPeuX2k2W1cRoXGDZjFoKB7eeeUsDYXiGmsrGTW3gNbi1XA7hghuCs8Kc4ouSjqhk335boY4DJCMBsQZG-yzqM358Iw/s1600/Pantallazo-1.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-xJjvfDakHIQ0qXP0fcLwCsstRkXBOQJ6SCEx9tjHInX4ZauOVPeuX2k2W1cRoXGDZjFoKB7eeeUsDYXiGmsrGTW3gNbi1XA7hghuCs8Kc4ouSjqhk335boY4DJCMBsQZG-yzqM358Iw/s400/Pantallazo-1.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5498641368149317138" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 400px; height: 300px; " /></a></span><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-xJjvfDakHIQ0qXP0fcLwCsstRkXBOQJ6SCEx9tjHInX4ZauOVPeuX2k2W1cRoXGDZjFoKB7eeeUsDYXiGmsrGTW3gNbi1XA7hghuCs8Kc4ouSjqhk335boY4DJCMBsQZG-yzqM358Iw/s1600/Pantallazo-1.png"></a></div>Braianhttp://www.blogger.com/profile/13742241213281007972noreply@blogger.com0tag:blogger.com,1999:blog-6301813106398565950.post-40775796102105246102010-07-27T09:37:00.000-07:002010-07-27T09:40:11.287-07:00¿Firefox lento en Ubuntu? Acá la solución!A continuación les dejo el siguiente truco si necesitan que Firefox funcione mas rápido, la verdad es que se siente una gran diferencia al iniciarlo y cuando carga las páginas, espero que les sirva. Saludos!<div><br /></div><div><span property="dc:content">Abre Firefox<br />1. En la barra de direcciones escribe : <span style="color: red;">about:config</span><br />2. En la barra "Filtro" teclea:<span style="color: red;"> network.dns.disableIPv6</span><br />3. Haz doble click sobre<span style="color: red;"> "network.dns.disableIPv6",</span> para que te aparezca el valor (value) <span style="color: red;">TRUE</span><br />4. Reinicia el Firefox</span></div><div><span property="dc:content"><br /></span></div><div><span property="dc:content">Fuente: <a href="http://www.taringa.net/posts/linux/4358847/arreglar-la-carga-lenta-de-firefox.html">Taringa </a></span></div>Braianhttp://www.blogger.com/profile/13742241213281007972noreply@blogger.com0tag:blogger.com,1999:blog-6301813106398565950.post-15404575466803154852009-11-27T09:56:00.001-08:002009-11-27T11:58:47.965-08:00Monitorear el sistema en Gnu/Linux desde consolaEn este post quiero hacer una recompilación de scripts y comandos para monitorear nuestro sistema desde la consola de una manera agradable, es decir darle un toque de color :).<br /><br /><span style="font-weight: bold;">Visualizar netstat:</span><br /><br />Empecemos con el monitoreo a través de la herramiento <a href="http://es.wikipedia.org/wiki/Netstat">netstat</a>, muy conocida por su multiplataforma para ver las conexiones entrantes y salientes. Bueno a continuación les dejo un script <a href="http://www.tail-f.com.ar/2009/10/11/noticias/netstat-con-colorcitos.html">encontrado en la web</a> y modificado para esta versión de Ubuntu 9.10 que uso en español.<br /><pre style="border: medium inset rgb(204, 204, 204); margin: 1em 2em; padding: 0.5em; overflow: scroll; font-family: "Courier New",Courier,monospace; white-space: nowrap;"><br />#!/bin/bash<br />cyan="\E[1;36m\E[1m";<br />normal="\E[m";<br />blue="\E[34m\E[1m";<br />violet="\E[35m\E[1m";<br />red="\E[31m\E[1m";<br />yellow="\E[33m\E[1m";<br />green="\E[37m\E[32m\E[1m";<br />text="\E[1;37m\E[1m";<br /><br />if [ "$UID" != "0" ]; then<br />echo -e "$red$0: You will get more information if you have root privileges. Try sudo $0$normal"<br />fi<br /><br />netstat -natp | \<br />while read line; do<br /><br />if [ `echo $line | awk '{print($1)}'` = "Proto" ]; then<br />echo -e "$yellow=====================================================================================================$normal"<br />echo -e "$text$line$normal"<br />echo -e "$yellow=====================================================================================================$normal"<br />else<br /><br />state=`echo $line | awk '{print($6)}'`<br />color=$yellow<br />case $state in<br />"ESTABLECIDO")<br />color=$green;;<br />"SYN_SENT" | "SYN_RECV")<br />color=$yellow;;<br />"FIN_WAIT1" | "FIN_WAIT2" |"TIME_WAIT")<br />color=$violet;;<br />"CLOSE" | "CLOSE_WAIT" | "LAST_ACK" | "CLOSING" )<br />color=$blue;;<br />"ESCUCHAR")<br />color=$red;;<br />"UNKNOWN")<br />color=$red;;<br />*)<br />esac<br />echo -e "$color$line$normal"<br /><br />fi<br />done;<br /></pre><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjv7zhNMp-ckrHR2aEhvg68-4XlZWv7UC6NfIMsoQimeOX21UVBpvHFskQkSt1Xi56NSF_qn1vXVPEiIIwdTeCWMfPYi75MCorTE2qmSMRpr_BlYgr-2S9sLtSPHcMOC6V6zgeJaNS2x3Q/s1600/netstat.png"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjv7zhNMp-ckrHR2aEhvg68-4XlZWv7UC6NfIMsoQimeOX21UVBpvHFskQkSt1Xi56NSF_qn1vXVPEiIIwdTeCWMfPYi75MCorTE2qmSMRpr_BlYgr-2S9sLtSPHcMOC6V6zgeJaNS2x3Q/s320/netstat.png" alt="" id="BLOGGER_PHOTO_ID_5408845930898933714" border="0" /></a>Para usar el script:<br /><pre>touch nett</pre> /*Creamos el fichero*/<br /><pre>chmod +x nett</pre> /*Le damos permiso de ejecucion*/<br /><pre>gedit nett</pre> /*Abrimos Gedit y pegamos el codigo y ponemos guardar */<br /><pre>./nett</pre> /*Para usarlo*/<br /><br /><span style="font-weight: bold;">Visualizar logs:</span><br /><br />Primero instalamos el paquete <a href="http://freshmeat.net/projects/ccze/">ccze</a> que nos colorizará nuestra terminal con los resultados de los logs.<br /><pre>apt-get install ccze</pre><br />Generalmente visualizamos los logs en los ficheros que se encuentran en /var/log/.<br /><br />La herramienta TAIL permite visualizar ciertas líneas de un archivo de texto plano, por ejemplo las últimas X líneas, pero la opción que utilizaremos se queda esperando cambios en el archivo y los muestra a medida que van apareciendo. En el caso de visualizar un archivo de log tendremos la actualización constante del archivo en nuestra pantalla:<br /><br /># tail -f /var/log/syslog<br /><br />Ahora solo queda mejorar un poco la salida para que sea mas ágil la lectura:<br /><br /># tail -f /var/log/syslog | ccze<br /><br />A continuación veremos la salida de dmesg:<br /><br /># tail -f /var/log/dmesg | ccze<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiB0yEvjCnCG548DktNuwyxWuVP3B7TS_-M99dNVhTSSpLXJYDX_WlpE3H7eYaMujTnVeSmJ-AePgohxIqZs7mhkgbB4xhTHo8nWZNVJAGxSErdCDyKtbHCpZy7p2ml8ped79Ui_yJvXT0/s1600/Pantallazo.png"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiB0yEvjCnCG548DktNuwyxWuVP3B7TS_-M99dNVhTSSpLXJYDX_WlpE3H7eYaMujTnVeSmJ-AePgohxIqZs7mhkgbB4xhTHo8nWZNVJAGxSErdCDyKtbHCpZy7p2ml8ped79Ui_yJvXT0/s320/Pantallazo.png" alt="" id="BLOGGER_PHOTO_ID_5408867346724520290" border="0" /></a>También se pueden monitorear tres logs al mismo tiempo, aunque no es muy recomendable nos dará una mirada al instante de lo que ocurre en nuestro sistema:<br /><br /># tail -f /var/log/syslog /var/log/auth.log /var/log/dmesg | ccze<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKULxbfr92zZ_mNzjImxsrtbqV1odOg3Z_-DD8Z32p5WLPItswSFiEmlpCKr6I2YOzkYQ0bOP_cZ0CFFSnNv4AvB9-p2kcomcFdOeppZcgz40gIF2NN6PUmWxgkgYTc-HtMpiSUuH_bqQ/s1600/Pantallazo-1.png"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKULxbfr92zZ_mNzjImxsrtbqV1odOg3Z_-DD8Z32p5WLPItswSFiEmlpCKr6I2YOzkYQ0bOP_cZ0CFFSnNv4AvB9-p2kcomcFdOeppZcgz40gIF2NN6PUmWxgkgYTc-HtMpiSUuH_bqQ/s320/Pantallazo-1.png" alt="" id="BLOGGER_PHOTO_ID_5408874423551859474" border="0" /></a><br />Pueden crear alias en el archivo $HOME/.bashrc para ahorrarse el comando en conjunto :<br /><br />...<br />alias syslog='tail -f /var/log/syslog | ccze'<br />alias maillog='tail -f /var/log/mail.log | ccze'<br />alias weblog='tail -f /var/log/squid/access.log | ccze'<br />...<br /><br />Luego solamente tipeando:<br /><br />$ syslog<br /><br />Veremos la salida de /var/log/syslog coloreada.<br /><br />Espero que les resulte útil. Saludos :)<br /><br /><span style="font-weight: bold;">Fuente y Relacionados:</span><a href="http://www.scribd.com/doc/23255498/Control-de-Logs-en-Gnu-Linux-Revista-HackxCrack"></a><br /><a href="http://www.estrellateyarde.es/so/logs-en-linux">Logs en Gnu/Linux</a><br /><a href="http://www.mey-online.com.ar/blog/index.php/archives/logs-en-tiempo-real">Logs en Tiempo Real</a><br /><a href="http://sliceoflinux.com/2009/04/13/visualizar-y-colorear-logs-en-ubuntu-server/">Colorear Logs</a>Braianhttp://www.blogger.com/profile/13742241213281007972noreply@blogger.com8tag:blogger.com,1999:blog-6301813106398565950.post-23562862453359484402009-11-06T17:53:00.000-08:002009-11-06T18:09:35.904-08:00Sonido inteligente en Ubuntu 9.10 Karmic KoalaTanto tiempo sin escribir en mi blog, espero que esta nota les resulte interesante :).<br />Ayer volví a instalar Ubuntu en su última versión 9.10, me pareció una exelente distro en cuando a funcionalidades y demás cosas como detención de hardware, etc.<br />Pero lo que yo quería era que el sonido se controlara de forma automática, pensé que esta versión de Ubuntu la traería pero no, entonces me decepcionó ja. Igual no todo es negro, con un simple comando podemos instalar <a href="https://launchpad.net/earcandy">Earcandy</a> que nos permitirá controlar nuestra reproducción de audio, por ejemplo abrimos un navegador y vemos un video en Youtube, entonces nuestro reproductor de música, sea rhythmbox o el que sea se silenciará de una manera gradual. Cuando el video finalice, nuestro reproductor volverá a su volumen original, si no lo creen pruebenlo ustedes mismos :)<br /><br />Comando para instalarlo:<br /><pre>apt-get install earcandy python-wnck </pre><br /><span style="font-weight: bold;">Nota: Me dio error al querer iniciar earcandy la primera vez, entonces instalé las librerías python-wnc</span><br /><pre>braianet@ubuntu:~$ earcandy<br />Traceback (most recent call last):<br />File "/usr/bin/earcandy", line 17, in <module><br /> import ear_candy<br />File "/usr/share/earcandy/ear_candy/ear_candy.py", line 20, in <module><br /> import wnck<br /></module></module></pre><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6PhEVoe7Yw5EFbzVt3l5DtYRYdHuWoxyqwBSNxVSDDClkFUxnosBpGJZFDMQ7r-2yQqb8UgVVuxFjSy6AJSuoGDyiTTld3z2EQs8ebdyy9H4uan33V5T8vL5Hc7PHxGCQ6vstHPG79so/s1600-h/Pantallazo.png"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6PhEVoe7Yw5EFbzVt3l5DtYRYdHuWoxyqwBSNxVSDDClkFUxnosBpGJZFDMQ7r-2yQqb8UgVVuxFjSy6AJSuoGDyiTTld3z2EQs8ebdyy9H4uan33V5T8vL5Hc7PHxGCQ6vstHPG79so/s320/Pantallazo.png" alt="" id="BLOGGER_PHOTO_ID_5401177580520232226" border="0" /></a><br />Como verán el programa trae una serie de opciones y se posiciona en la barra de notificaciones, también es posible ocultarla. Bueno espero que les sirva. Saludos :)Braianhttp://www.blogger.com/profile/13742241213281007972noreply@blogger.com1tag:blogger.com,1999:blog-6301813106398565950.post-1040172763914970612009-02-28T07:08:00.001-08:002009-02-28T08:04:52.496-08:00Instalar Flash Player 64 bits en Gnu/LinuxDistro: Todas.<br />Ultima versión disponible: <a href="http://download.macromedia.com/pub/labs/flashplayer10/libflashplayer-10.0.22.87.linux-x86_64.so.tar.gz">libflashplayer-10.0.22.87.linux-x86_64.so.tar.gz</a><br />Fecha: 24 de febrero del 2009<br /><br />Modifique un <a href="http://www.ventanazul.com/articulos/flash-player-10-64-bits">script que encontre</a>, espero que les sirva saludos!<br /><br /><pre><br />#!/bin/bash<br /># Script para instalar libflashplayer-10.0.22.87.linux-x86_64.so.tar.gz creado por Braianet :).<br /># Bajo Licencia GPL<br /><br /># Cerrar Firefox<br />FLASHV="libflashplayer-10.0.22.87.linux-x86_64.so.tar.gz"<br /><br />clear<br />#verifica si es root<br />if [ "$(whoami)" = 'root' ]<br />then<br /><br />echo "Cerrando Firefox........."<br /><br />pkill firefox<br />sleep 2<br /><br />echo "Advertencia:<br />Antes de continuar, elimine cualquier version previa de flash player"<br /><br />echo "Presione 1 para continuar, 0 para salir"<br /><br />read ENTRADA<br /><br />case $ENTRADA in<br />1 )<br /> echo "Descargando flash player......"<br /> wget http://download.macromedia.com/pub/labs/flashplayer10/$FLASHV &&<br /> tar xvzf $FLASHV<br /> cp libflashplayer.so /usr/lib/mozilla/plugins/<br /> echo "Linkeando librerias"<br /> ln -sf /usr/lib/mozilla/plugins/libflashplayer.so /usr/lib/mozilla/plugins/<br /> ln -sf /usr/lib/mozilla/plugins/libflashplayer.so /usr/lib/firefox-addons/plugins/<br /> echo "Terminado"<br /> echo "Puedes iniciar Firefox"<br /> exit<br /> ;;<br />0 )<br /> echo "Saliendo......"<br /> exit<br /> ;;<br />esac<br /><br />else<br /><br />echo "Usted no es root, ejecutelo como root para instalarlo!"<br />fi<br /><br />#Fin de script<br /><br />Para utilizarlo:<br /><br /># chmod +x script.sh<br /># ./script.sh<br /><br /></pre>Braianhttp://www.blogger.com/profile/13742241213281007972noreply@blogger.com2tag:blogger.com,1999:blog-6301813106398565950.post-74317033226787147942008-12-11T04:15:00.000-08:002008-12-11T04:44:09.165-08:00Frontend for ffmpeg<b>FFmpeg</b> es una colección de <a href="http://es.wikipedia.org/wiki/Software_libre" title="Software libre">software libre</a> que puede grabar, convertir y hace <a href="http://es.wikipedia.org/wiki/Streaming" title="Streaming">streaming</a> de <a href="http://es.wikipedia.org/wiki/Audio" title="Audio" class="mw-redirect">audio</a> y <a href="http://es.wikipedia.org/wiki/V%C3%ADdeo" title="Vídeo" class="mw-redirect">vídeo</a>. Incluye libavcodec, una biblioteca de <a href="http://es.wikipedia.org/wiki/C%C3%B3dec" title="Códec">códecs</a>. FFmpeg está desarrollado en <a href="http://es.wikipedia.org/wiki/Linux" title="Linux" class="mw-redirect">Linux</a>, pero puede ser compilado en la mayoría de los sistemas operativos, incluyendo <a href="http://es.wikipedia.org/wiki/Windows" title="Windows" class="mw-redirect">Windows</a>. <a href="http://es.wikipedia.org/wiki/FFmpeg">Ver más...</a><br /><br />Como la mayoría sabrá es un extra super :P convertidor de archivos multimedias, practicamente todos los formatos soportados. Debido a su principal uso en la consola, existen cientos de <a href="http://casidiablo.net/ffmpeg/">ejemplos </a>de como convertir audio, video, imagenes, etc en la consola, pero lo que yo necesita era un Frontend gráfico, es decir un GUI para no estar recordando todos esos comandos en la consola asi que decidí investigar y encontré varios programas...<br /><br /><div style="text-align: center;"><span style="font-weight: bold;">Hyper Video Converter</span><br /></div><br />Posee dos versiones, <a href="http://gtk-apps.org/content/show.php/Hyper+Video+Converter?content=88970">Gtk</a> y <a href="http://kde-apps.org/content/show.php/Hyper+Video+Converter?content=67781">Qt4</a>, para los puristas(me incluyo) en los escritorios...<br /><br />Versión Gtk:<br /><br />REQUIRIMIENTOS :<br />-------------------------<br /><br />gtk2 (libgtk2)<br />ffmpeg<br />ffmpeg2theora<br />mplayer<br /><br /><br />INSTALACION(todas las distros) :<br />--------------<br /><br />1) Descargas el paquete binario<br />2) Lo Descomprimes<br />3) Ejecutas ./installer.sh como root<br />4) copia ./.hyperconf en tu carpeta $HOME.<br /><br /><br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCuLc9MDGoDGrW5t9vVQ9jO72Soe8SLuabtrp9n31nrgZgPyu7tFYHebsBHntJIEv7ZXYd9AHAKSk7VoeVBbxExdTXsun5xv3qcSPOHvaixM_1WsRwcZzlbh1A8JocPydbkzgm9BUZT24/s1600-h/88970-2.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 200px; height: 130px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCuLc9MDGoDGrW5t9vVQ9jO72Soe8SLuabtrp9n31nrgZgPyu7tFYHebsBHntJIEv7ZXYd9AHAKSk7VoeVBbxExdTXsun5xv3qcSPOHvaixM_1WsRwcZzlbh1A8JocPydbkzgm9BUZT24/s200/88970-2.jpg" alt="" id="BLOGGER_PHOTO_ID_5278510669549598290" border="0" /></a><br />Nota Archlinuxeros Instalación: <span style="font-weight: bold;">yaourt -S hypervideoconverter</span><br /><br /><div style="text-align: center; font-weight: bold;">Winff<br /></div><br />Este programita me gustó mas, pueden encontrarlo <a href="http://code.google.com/p/winff/">aquí</a>.<br /><br />Para archlinux: <span style="font-weight: bold;">yaourt -S winff</span><br /><br /><table><tbody><tr><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"><img src="http://biggmatt.com/images/googlecode/winff-xp.jpg" /></td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"><img src="http://biggmatt.com/images/googlecode/winff-ubuntu.png" /></td></tr> <tr><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"><img src="http://biggmatt.com/images/googlecode/windows-icon.png" /> <a href="http://winff.googlecode.com/files/WinFF-0.43-setup.exe" rel="nofollow">WinFF 0.43 Installer</a></td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"><img src="http://biggmatt.com/images/googlecode/ubuntu_icon.png" /> <a href="http://code.google.com/p/winff/wiki/UbuntuInstallation" rel="nofollow">Ubuntu</a> <img src="http://biggmatt.com/images/googlecode/debian.png" /> <a href="http://code.google.com/p/winff/wiki/DebianInstallation" rel="nofollow">Debian</a></td></tr> <tr><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"><img src="http://biggmatt.com/images/googlecode/redhat.png" /> <a href="http://winff.googlecode.com/files/winff-0.43%7Eppa1h.i386.rpm" rel="nofollow">WinFF 0.43 I386 RPM Package</a></td><td style="border: 1px solid rgb(170, 170, 170); padding: 5px;"><a href="http://www.lazarus.freepascal.org/" rel="nofollow"><img src="http://biggmatt.com/images/googlecode/FreePascal.jpeg" /></a><a href="http://code.google.com/p/winff/downloads/detail?name=winff0.43-source.tar.gz&can=2&q=" rel="nofollow">WinFF 0.43 Source</a> <a href="http://www.gnu.org/licenses/gpl.html" rel="nofollow"><img src="http://biggmatt.com/images/gplv3.png" /></a></td></tr></tbody></table><br /><br />Saludos y espero que les sea útil!.Braianhttp://www.blogger.com/profile/13742241213281007972noreply@blogger.com0tag:blogger.com,1999:blog-6301813106398565950.post-85138093514585789192008-12-09T15:58:00.000-08:002008-12-10T12:47:02.404-08:00Argentina : La Web 2.0 con calle de tierra y de techo el cielo...<p>Navegando por la web encontré <a href="http://www.tufuncion.com/google-gears">este artículo</a> y en él un gran comentario, creo que es un fiel reflejo de la Argentina y de Latinoamerica en si, espero que les interese. Saludos!</p><p></p><p><span style="font-weight: bold;">Argentina : La Web 2.0 con calle de tierra y de techo el cielo...</span><br /></p><p>Así de simple , este titulo un tanto “odioso” seria el resultado final de muchas encuestas , que se pueden realizar hoy en el cono urbano del gran Buenos Aires y desde luego en muchas provincias de Argentina .<br />Cuando uno despega su cerebro del monitor de una PC , se da cuenta que conviven dos realidades muy distantes entre si .<br />La cibernética y sus adelantos nos llevan a creer que ese mundo virtual esta siempre al alcance de nosotros , ( claro nunca nos aclaran que solo unos pocos acceden ) llegamos a creer que nosotros “ somos todos”...<br />Hoy nos deslumbramos cuando nos llega tanta información en la red de los “mega” negocios millonarios , cómo llegar al éxito y como lo lograron<br />( en realidad los apellidos nos hablan a las claras de otro país...otra gente y otro poder adquisitivo ) aprendimos al instante que es una web 2.0 o un bloger , como interactuar muy rápido , buscar información y todo lo que usted ya sabe ... perdón...eso si tiene Internet .<br />Todo parece al alcance de nuestras manos “ rápido , veloz y muy fácil “<br />tu computadora pronto se transforma en “ la novia feliz”<br />La enciendes y listo...<br />Eso si , mientras pagues la cuenta de teléfono y los gastos de conexión serás del primer mundo , eso sin contar que debes cambiar tu PC por otro modelo , porque muy pronto y mas rápido de lo que tu bolsillo pueda soportar se convierte en un aparato viejo y demasiado lento .<br />Pero como dije al principio , ese mundo de seducción y erotismo , termina cuando apagas tu computadora y decides ver que hay a tu alrededor .<br />Ahí te das cuenta que entre lo virtual y lo real hay demasiada enemistad que jamás serán hermanas ...dos mundos antagónicos.<br />Como no soy partidario de extensos prólogos , voy al tema en cuestión .<br />Por motivos que no tiene mucho sentido en este caso detallar , camino mucho a diario sobre zonas muy cercanas a capital federal podría citar a muchos barrios periféricos<br />Y lo que puedo observar a simple vista es la cara oculta de “aquellas cosas que no es conveniente mostrar ” mientras tus zapatos se llenan de tierra y aprendes muy rápido como sortear una zanja , te das cuenta que esta hermosa historia de la Internet y los mega negocios solo es para un porcentaje muy pequeño de una extensa población totalmente marginada.<br />La gran mayoría , aun vive con calle de tierra y de techo el cielo , con una garrafa en envase de 30 o 40 pesos no hay demasiadas expectativas de obtener una banda ancha , tampoco les sobra tiempo para entender que es un blog o un sitio web 2.0 , subsistir y llegar a fin de mes es el tema del día .<br />Y si les digo que la mayoría cree que la PC es una maquina perversa llena de juegos y pornografía ?<br />Y no los culpo por opinar así , la tele con cuatro canales no informa demasiado no...? no hay para ellos TV educativa , solo algunos programas con culos y tetas de plástico y algún noticiero...esa es su vida y su entorno<br />Esa es toda la “ data” que les llega.</p> <p>Solo para que tengan una idea de la “ otra historia”<br />Esa que jode tanto vio...<br />En cada barrio , podemos encontrar algunas familias que si compraron una PC , ahora lo gracioso es que no tienen Internet y porque...?<br />Tan simple como preguntar , como hace esa familia para pagar un costo promedio de 140 a 160 pesos por mes , para acceder a una banda ancha y desearía que no insistan con esas historias de marketing de cuarta , donde intentan convencerte que hay promociones por 40 pesos , todos sabemos que esas famosas “ promo” duran tres meses y solo te dan un moden , que los bautice ( tortuga sin patas por lo lento ) que en definitiva no sirve de nada y a la larga terminas pagando lo mismo o mas caro.<br />Los demás papas y mamas que no tienen la PC en casa con suerte mandan a sus hijos a los famosos tugurios llamados “ciber” y si hablamos con la verdad ( de esto se trata) estos adolescentes no van por la biblioteca virtual Vikypedia ni para leer las novedades de marqueting de los nuevos adelantos de los empresarios norteamericanos , tampoco saben que es una web 2.0 ni como ganar supuestos dineros con sitios web..<br />Van en definitiva a “ jugar ” en red o contactar con su novia en un chat y no mas que eso , porque ..?<br />Será porque , las monedas no dan para mas..<br />Y las escuelas...?<br />Podríamos recorrer muchas escuelas ...de echo lo hice ..<br />Aun siento mucha vergüenza y demasiada bronca por lo que pude ver , aunque cueste creerlo viejas Pentium uno y la inolvidable “486” vuelven a la vida en esos lugares , con maestras que hacen milagros para que funcionen , con el viejo Word 95 intentan que la palabra “ computación” tenga sentido .<br />Pude ver esas maquinas sin compactera , con rígidos de apenas 1 giga o menos y para prenderas deben esperar cinco minutos para que aparezca en inolvidable Windows 95...<br />Todo esto a solo 5 kilómetros de los flogers , los dark , cumbios y la madre que me parió.<br />Imaginan colocar una de esas maquinas en internet...?<br />Y nosotros aquí “del otro lado” mientras un monitor de plasma con 32 BIT de colores nos muestra como Mr .Jonson de Machachuset hizo 300 millones de dólares con su blog sobre cocina griega....<br />( lo bizarro es creer que somos parte de ese mundo tecnológico )<br />Como simplificar en pocas palabras esta realidad..?<br />Calles de tierra , pibes casi sin padres , un porro y por la tarde un ratito al ciber mas cercano , creo que esta es en definitiva la respuesta final .<br />Repito , recorrí tantos barrios como pude , hable con muchachos y niñas con padres y maestros , siempre la misma respuesta “ el dinero no alcanza y menos para tener la ultima pentium cuatro o soportar otra cuota a fin de mes por una banda ancha .<br />Perdón...y supongamos que tengas el dinero , quizás tampoco logres la conexión , no sea cosa que la compañía te diga :<br />- Lo sentimos usted esta en zona de riesgo.....<br />Triste no..?<br />Subsidios , ayudas , colaboraciones etc y mas etc...<br />Una mentira , tan solo eso.. una gran mentira ...<br />Solo por citar un ejemplo , a una escuelita le robaron su PC en el barrio de Madero , hoy año 2008 festeja el año de su ausencia...<br />Que tal...?<br />Tal vez quiera un ejemplo mas....<br />Algunos destacamentos de policía no tienen fax o los mandan a reparar a técnicos de barrio , porque si esperan de la cooperadora policial...<br />Seguirán escribiendo por mucho tiempo con la vieja “ maquina rémington” y esto lo vi personalmente, inclusive muchas de las impresoras que tienen son a “cinta” así como suena .<br />Mire , si tomamos la cantidad de habitantes que tiene este país , somos apenas cuatro gatos locos los que tenemos acceso a ese mundo colorido y cibernético que nos habla hasta el hartazgo de millones de dólares ....<br />Nosotros somos apenas simples “paseantes” de un mundo casi inalcanzable , es como entrar al mejor choping y no comprar nada , miramos como otros hacen sus negocios .<br />Perdón...por lo menos algunos entramos a ver...<br />Ya se que este informe duele y no conviene ventilar demasiado y hasta logro entender que no faltaran algunos defensores del comercio virtual gritando a cuatro vientos...<br />- Hay casos en Argentina donde fulana de tal , coloco un blog y hoy tiene su micro empresa o casos parecidos..<br />Puedo responder a esto sin mucho vericueto lingüístico ..<br />Y cuantas fulanas de tal , viven de la Internet hoy en Argentina..?<br />Cuantas..?<br />Una .? cinco. o 20..en el mejor de los casos...?<br />Como dicen lo pibes hoy en dia ..” no existís” esto no marca nada ni dice nada ...<br />Repito , como ejemplo de adelanto , sostengo que es un maldito fracaso..<br />Por lo menos en Argentina , de otros países , no se y no me interesa .<br />Por tal motivo no tengo reparos en afirmar que las encuestas marquetineras o los famosos index todo se muere a 10 kilómetros del obelisco y no mas que eso..<br />Que cosa no...? de lo que no se tiene , no hay encuestas .<br />Tendrían que recorrer un poquito los barrios y sus alrededores para darse cuenta que somos apenas cuatro trasnochados inflados por el ego de creer que somos tecnológicos y nos llenamos la boca hablando de google , yahoo o youtube , cuando la realidad , nos muestra un país dividido entre egoístas y mentirosos .<br />Que importa si la web 2.0 o el bloger tal hace furor en Colorado , Dember o New York ... si solo pueden acceder a esa fantasía el 5% de la población de un país..?<br />Perdón cuanto dije...?<br />Otro ejemplo y el ultimo...<br />Miren yahoo ( en español) en la sección respuestas<br />En ese foro interactúan miles de usuarios , bueno, que me contesten los marquetineros de saco y corbata , los discípulos de Bill gates cuantos lectores argentinos “hoy” y “ahora” están en ese sitio .<br />Cuantos...?<br />Esto contesta a mucho fanático que insiste en hacernos creer que Internet es popular en Argentina , cuando en realidad , el sexo porro y birra , tiene hoy mas adeptos que lo internautas argentinos que usan google.<br />Yo insisto con lo mismo y aunque se me tilde de pesimista agrio o resentido<br />Me da igual...<br />Será porque la realidad me jode mal , no puede ser que cuatro cara lánguida de saco y corbata nos vengan a vender que la Internet y sus supuestos beneficios es un hermoso regalo que adorna hoy las mesas de todos los hogares argentinos .<br />Tampoco , idiotizar al usuario a punto de hacerles creer que aquellos afortunados que acceden a Internet tienen el mundo de los negocios en sus manos , porque los tipos encargados de mencionar en miles de sitios esos ejemplos exitosos , no hablan de ningún Rodríguez ni Pérez o García...<br />Son todos Jhonatan , Jonson , Anderson etc y mas etc.<br />Y de esto ultimo lo digo con conocimiento , comencé cuando la Internet casi ni se conocía en este país y puedo hablar de los miles de trucos que existen en ella o como cazar incautos .<br />Para lograr un éxito económico en la red no tiene grandes secretos , sabes porque..?<br />Nada lograras sin una base sólida y gente que este dispuesta a invertir en tu proyecto y eso se resume a dos palabras “dinero y capital de riesgo” .<br />Lo demás es puro cuento . nadie se hace millonario en Internet de un día para el otro y vuelvo a repetir lo mismo , los ejemplos que me dan de un tal Jeferson o Diana Edith no se cuanto .... no sirven .<br />Mientras existan muchas mamas que mandan a sus hijos a la escuela , solo porque ahí le dan de comer o miles de familias a media hora de colectivo del centro , que aun “ hoy” no tienen agua potable ...<br />La web 2.0 es a penas un rey mago que vive en barrio norte...<br />Y te digo mas...ninguno de esos padres saben que significa “Mi PC”.<br />Queres apostar...<br />Para finalizar yo pregunto ...si hay tanto cerebro privilegiado trabajando para que la 2.0 , de mucho dinero , no sobra por ahí un poquito de materia gris para ver como podemos hacer viable una realidad mas concreta , que muchos argentinos puedan tener su PC conectada con el mundo..?<br />No se , digo..? </p> <p>Chau<br />Por jaker2 ( escritor )<br />Bs. As Argentina</p><p></p>Braianhttp://www.blogger.com/profile/13742241213281007972noreply@blogger.com3tag:blogger.com,1999:blog-6301813106398565950.post-69385760279542077302008-12-04T03:13:00.000-08:002008-12-04T03:21:41.489-08:00Cerebro TrabajadoHe creado un nuevo blog, se llama cerebro trabajando, y está destinado a aquellas personas que se cuestionan todo acerca del presente, la economía, el gobierno, la ecología, muchas teorías e hipótesis, pero como saben cada uno tiene la capacidad de discernir lo que es correcto o no, lo que es verdad o mentira, de creer o no creer, quizás algunos documentales afecten su moral ya sean fanáticos religiosos, patrióticos, políticos, etc. Open your Mind!.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://cerebro-trabajando.blogspot.com"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 212px; height: 236px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgSA_1M-DsG4UpAb_JqmqjoZHj74G-YRJ-RPAQgUxCwaJTtRe8pf6sWqJ70nTtR3r2K0B_aKw4JHVZNG9n9DD6cvA8yqZykFTBh7WOkR_5z7QBm9Ul88qas2ggIcxtHqyNpXeZCjZ6KgSc/s236/cerebro.jpg" alt="" border="0" /></a><br /><div style="text-align: center;"><a href="http://cerebro-trabajando.blogspot.com">http://cerebro-trabajando.blogspot.com</a><br /></div>Braianhttp://www.blogger.com/profile/13742241213281007972noreply@blogger.com0tag:blogger.com,1999:blog-6301813106398565950.post-21321905644983860462008-11-04T15:49:00.000-08:002008-11-04T15:55:59.928-08:00Programación en BashExelente manual para la programación en bash, desde <a href="http://wiki.xtech.com.ar/index.php/Programaci%C3%B3n_de_scripts_en_Bash">xtech.com.ar</a><br /><br /><h2>Introducción </h2> <p>Linux, así como la mayoría de los UNIX, utilizan shell scripts para realizar una infinidad de tareas. Un shell script es un programa que se escribe con una sintaxis particular, en un archivo de texto plano, para que sea interpretado por un shell, en este caso /bin/bash. </p><p>Un shell script es básicamente un programa que llama a otros programas, con la posibilidad de hacer algun tipo de procesamiento propio (como control de flujo, operaciones matemáticas simples, etc). </p><p>Por lo tanto la forma de crear un shell script es hacer un archivo con nuestro ya querido vi: </p> <pre>vi holam<br /></pre> <p>Luego lo llenamos con las instrucciones que deseamos. Por ejemplo: </p> <pre>#!/bin/bash<br />echo "Hola mundo!"<br /># Esto es por costumbre utilizado como ejemplo del primer programa.<br /># Se dice que trae suerte!<br /></pre> <p>Luego le damos permisos de ejecución a ese archivo: </p> <pre>chmod +x holam<br /></pre> <p>Y de esta manera ya tendremos listo un shell script que se ejecuta de la siguiente forma: </p> <pre>./holam<br /></pre> <p>Debemos destacar la primera linea de nuestro script bash: </p> <pre> #!/bin/bash<br /></pre> <p>esta línea le indica al sistema que el script será interpretado por el programa que se encuentra a continuación de #!, en este caso, /bin/bash </p><p>Las últimas dos líneas son comentarios </p> <pre> # Esto es por costumbre utilizado como ejemplo del primer programa.<br /># Se dice que trae suerte!<br /></pre> <p>Los comentarios comienzan con # y se extienden hasta el final de la línea. Es muy útil ir comentando el código que uno escribe, para recordar qué realizan ciertas funciones o algoritmos, y otra persona pueda comprender el funcionamiento de nuestro script. </p> <div class="editsection" style="float: right; margin-left: 5px;"><a href="http://wiki.xtech.com.ar/index.php?title=Programaci%C3%B3n_de_scripts_en_Bash&action=edit&section=2" title="Edit section: Variables"></a><br /></div><a name="Variables"></a><h2> Variables </h2> <p>Las variables en un script BASH son simplemente identificadores, sin tipo. Para asignar un valor a una variable, se utiliza el operador =, por ejemplo: </p> <pre>[jose@xtech experto]$ MIVARIABLE=4<br /></pre> <p>Por convención, los nombres de las variables se usan en mayúsculas, aunque no es obligatorio. </p><p>Para usar el contenido de la variable, dentro de un script, se usa el operador $. Por ejemplo: </p> <pre>[jose@xtech experto]$ echo $MIVARIABLE<br />4<br />[jose@xtech experto]$<br /></pre> <p>Para utilizar el contenido de una variable, seguida de un texto, debemos usar las llaves {} </p><p>Consideremos este ejemplo: </p> <pre> ARCHIVO="/tmp/ej"<br />mv $ARCHIVO $ARCHIVO-bak<br /></pre> <p>En este caso, bash interpretaría a $ARCHIVO y $ARCHIVO-bak como dos variables distintas, para evitar esto debemos reescribirlo de esta manera: </p> <pre> ARCHIVO="/tmp/ej"<br />mv $ARCHIVO ${ARCHIVO}-bak<br /></pre> <a name="Comillas"></a><h2> Comillas </h2> <p>En el shell, el espacio, o el tab, son separadores. Es decir, que cuando al shell le indicamos </p> <pre>ls -l hola que tal<br /></pre> <p>Lo interpreta como que le pedimos que nos de información sobre tres archivos, llamados: hola, que, y tal. </p><p>Si en realidad, lo que queríamos, era información sobre un archivo llamado "hola que tal", entonces hay varias maneras de indicarle al shell que los espacios entre esas palabras no deben ser separadores. </p> <a name="Escape_.28_.5C_.29"></a><h3> Escape ( \ ) </h3> <p>Hay un caracter de escape, que indica al shell que el siguiente carácter no es especial. Y es la barra invertida. Por lo tanto, podríamos obtener la información del archivo "hola que tal" de la siguiente forma: </p> <pre>ls -l hola\ que\ tal<br /></pre> <p>Los espacios no son especiales, no son separadores, y "hola que tal" es una sola palabra. </p><p>Algunos caracteres especiales más: </p> <pre><sup>\ @ ! | < > [ ] { } ( ) ? * $ ' ^ ` " # & ;</sup><br /></pre> <p>Por lo tanto, si queremos incluir la \ en alguna parte, entonces debemos ponerla 2 veces (\\), la primera para decirle a BASH que no tome como carácter especial lo que sigue y la segunda como ese carácter que queremos incluír. Esto es muy común en casos como: </p> <pre>cd algún\ directorio\ con\ espacios<br /></pre> <a name="Comillas_dobles_.28_.22_.22_.29"></a><h3> Comillas dobles ( " " ) </h3> <p>Las comillas dobles hacen que los espacios entre las comillas no sean especiales. Por lo tanto, podríamos haber utilizado: </p> <pre>ls -l "hola que tal"<br /></pre> <p>Todos los otros carácteres siguen siendo especiales. </p> <a name="Comillas_simples_.28_.27_.27_.29"></a><h3> Comillas simples ( ' ' ) </h3> <p>Las comillas simples logran que ningún caracter (salvo la comilla simple misma) sea especial. Por ejemplo, si quisieramos crear un archivo que se llame *@$&, lo debemos hacer rodeándolo de comillas simples: </p> <pre>touch '*@$&'<br /></pre> <p>Si queremos poner una comilla simple, debemos "escaparla". Para crear un archivo llamado que'tal, deberíamos hacerlo así: </p> <pre>touch 'que\'tal'<br /></pre> <p>Ya que si no lo hacemos, la segunda comilla "cierra" la primera! </p> <a name="Comilla_invertida_.28_.60_.60_.29"></a><h3> Comilla invertida ( ` ` ) </h3> <p>Las comillas invertidas son más raras. Deben rodear un comando. Ese comando será ejecutado, y lo que ese comando imprima reemplazará al contenido de las comillas invertidas. Tal vez lo más sencillo sea un ejemplo: </p> <pre>[jose@xtech experto]$ ls<br />experto.aux experto.log experto.lyx experto.pdf experto.tex<br />experto.dvi #experto.lyx# experto.lyx~ experto.ps experto.toc<br /><br />[jose@xtech experto]$ V=`ls`<br />[jose@xtech experto]$ echo $V<br />experto.aux experto.log experto.lyx experto.pdf experto.tex<br />experto.dvi #experto.lyx# experto.lyx~ experto.ps experto.toc<br />[jose@xtech experto]$<br /></pre> <p>El uso más frecuente de las comillas invertidas es poder asignar el "resultado" de un comando a una variable. </p> <a name="Control_de_flujo"></a><h2> Control de flujo </h2> <p>Esto refiere al cauce o flujo normal de los programas. No siempre hay un solo camino a seguir y estas proposiciones permiten que el programa realice distintas tareas, según las condiciones de las variables a interpretar. </p> <a name=".22if.22"></a><h3> "if" </h3> <p>El"if" es un proposición de control que verifica si es verdadera o falsa una condición. </p><p>Sintaxis: </p> <pre>if comando-condición<br />then<br />Comandos si la condición es verdadera<br />else<br />Comandos si la condición es falsa<br />fi<br /></pre> <p>Es importante que la ubicación de las lineas se mantenga, ya que las proposiciones if/then/else/fi se controlan línea por línea. La parte else es opcional. En caso de querer hacer todo el control en una sola línea, las proposiciones deberán estar separadas por un punto y coma (;). </p><p>Los comandos que estén debajo del then se ejecutarán si la condición dio verdadera. Esto quiere decir que el valor de retorno de la condición fue 0 (cero). En caso contrario se ejecutarán los comandos que le siguen al else, si es que se utilizó esta proposición. </p><p>En la condición se puede poner un comando, donde la ejecución del mismo (su valor de retorno) definirá qué comandos (de qué proposición) se ejecutarán. </p><p>Si se verifica una condición, se deberán utilizar los corchetes para mayor comprensión. </p><p>Ejemplos: </p><p>(utilizando comandos) <i>El hecho de entregar algo como salida se toma como condición lógica verdadera.</i> </p> <pre>if ps ax | grep httpd | grep -v grep<br />then<br />echo "El web server está funcionando"<br />else<br />echo "El web server NO esta funcionando"<br />fi<br /></pre> <p>(utilizando condiciones) </p> <pre>if [ -w /etc/passwd ]<br />then<br />echo "Tengo permisos de escritura en el archivo /etc/passwd"<br />else<br />echo "NO tengo permisos de escritura en el archivo /etc/passwd"<br />fi<br /></pre> <p>Puede suceder que tengamos que testear mas de una condicion, para esto, podemos utilizar la siguiente estructura: </p> <pre>if condición1<br />then<br />Comando1<br />Comando2<br />elif condición2<br />then<br />Comando1<br />Comando2<br />else<br />Comando-por-defecto #Ninguna de las condiciones anteriores es verdadera<br />fi<br /></pre> <p>Esta es una manera de abreviar varias estructuras if - then - else - if en una sola, pudiendo utilizarse más de dos condiciones. </p><p>La estructura de control if, es muy utilizada con <a href="http://wiki.xtech.com.ar/index.php/Programaci%C3%B3n_de_scripts_en_Bash#test" title=""><code>test</code></a>, que no es más que una operación de comparación, en las condiciones que se requieran. </p> <a name=".22case.22"></a><h3> "case" </h3> <p>El "case" es una proposición que puede analizar y validar varios casos (opciones) del valor de una variable. </p><p>Sintaxis </p> <pre>case variable in<br />patrón | patrón)<br />Comando;<br />Comando;<br />Comando;;<br /><br />patrón | patrón)<br />Comando;<br />Comando;<br />Comando;;<br />*)<br />Comandos si ningún otro valor fue igualado;;<br />esac<br /></pre> <p>El case es raramente usado, pero es muy eficiente en algunos casos. </p><p>Ejemplos: </p> <pre>case $mes in<br />ene*|Ene*)<br />echo "Mes de Enero";;<br />feb*|Feb*)<br />echo "Mes de Febrero";;<br />mar*|Mar*)<br />echo "Mes de Marzo";;<br />*)<br />echo "Algún otro mes!";;<br />esac<br /></pre> <a name="Ciclos"></a><h2> Ciclos </h2> <p>Los ciclos contienen secciones del programa que se repetirán una determinada cantidad de veces o hasta que alguna condición cambie. </p> <a name="for"></a><h3> for </h3> <p>El for debe ser el ciclo más utilizado, es muy práctico cuando se trabaja con shell scripts. </p><p>A diferencia de los lenguajes de programación más comunes, un ciclo for dentro de un shell script realiza una acción dada sobre cada uno de los elementos de una lista, y no sobre una variable que se va incrementando en cada ciclo. </p><p>La variable utilizada en el for (en este caso $i) es reemplazada por cada una de las palabras de la lista, en cada ciclo del for. </p><p>Sintaxis: </p> <pre>for i in lista de palabras<br />do<br />cuerpo del ciclo, $i tiene el valor de elementos sucesivos de la lista<br />done<br /></pre> <p>Ejemplos: </p> <pre>for i in `ls -1 /tmp`<br />do<br />echo $i<br />rm -i $i<br />done<br /></pre> <p>En este ciclo, el comando ls -1 /tmp, generará una lista de todos los archivos que existen en el directorio /tmp. Dentro del cuerpo del ciclo imprimimos el contenido de la variable y luego preguntamos si se desea borrar ese archivo (opción -i del comando rm). </p> <a name="while"></a><h3> while </h3> <p>Este ciclo utiliza la condición de terminación de un comando (valor de retorno) para controlar la ejecución de los comando dentro del ciclo. Termina la ejecución del ciclo, cuando el comando devuelve falso (algo diferente a 0). </p><p>Sintaxis: </p> <pre>while comando<br />do<br />cuerpo del ciclo ejecutado a condición de<br />que el comando devuelva verdadero<br />done<br /></pre> <p>Ejemplos: </p> <pre>while sleep 60<br />do<br />who | grep daniel<br />done<br /></pre> <p>En este ejemplo, cada 60 segundos (definidos por el comando sleep 60), verificará si el usuario daniel ha ingresado al equipo. En caso de que lo haya hecho, el listado del who saldrá por pantalla (cada 60 segundos). </p> <a name="until"></a><h3> until </h3> <p>Este ciclo se comporta de una manera muy similar al anterior, ya que define su control dependiendo del comando que ejecuta (si éste da verdadero, se sigue ejecutando el ciclo). </p><p>Sintaxis: </p> <pre>until comando<br />do<br />cuerpo del ciclo ejecutado a condición<br />de que el comando devuelva falso.<br />done<br /></pre> <p>Ejemplo: </p> <pre>until who | grep daniel<br />do<br />sleep 60<br />done<br /></pre> <p>En este ejemplo, a diferencia del ejemplo del ciclo while, el ciclo ejecuta primero el comando, de esta forma no es necesario esperar 60 segundos para saber si el usuario daniel esta logueado en el equipo (si el usuario esta logueado, el ciclo termina). </p> <a name="Argumentos"></a><h2> Argumentos </h2> <p>Los argumentos sirven para pasarle a un programa o una función valores desde la línea de comando. </p> <table align="center" border="1"> <tbody><tr> <th width="50">Variable </th><th width="320">Descripción </th></tr> <tr> <td>$# </td><td>Número de argumentos </td></tr> <tr> <td>$* </td><td>Todos los argumentos del shell </td></tr> <tr> <td>$- </td><td>Opciones suministradas al shell </td></tr> <tr> <td>$? </td><td>Valor de retorno del último comando ejecutado </td></tr> <tr> <td>$$ </td><td>Identificación del PID (número de proceso) </td></tr> <tr> <td>$0 </td><td>Nombre del script </td></tr> <tr> <td>$1 </td><td>Primer argumento </td></tr> <tr> <td>$n </td><td>Argumento "n" </td></tr></tbody></table> <p>Ejemplo: </p> <pre>#!/bin/sh<br />#<br /># Programa que recibe argumentos y los imprime por pantalla<br />#<br />echo "\$*: $*"<br />echo "\$#: $#"<br />echo "\$0: $0"<br />echo "\$1: $1"<br />echo "\$2: $2"<br /></pre> <p>Notas sobre el ejemplo: </p><p>En la líneas de impresión (echo), para imprimir el símbolo "$" (pesos) se tiene que anteponer el símbolo "\" (contra barra), sino el shell lo va a interpretar como una variable, y si esta existe imprimirá su contenido. </p> <a name="Funciones"></a><h2> Funciones </h2> <p>Las funciones son un recurso esencial para la buena programación, permiten escribir una sola vez un pedazo de código que se repita varias veces en el script, y así, minimizar el margen de error y también la cantidad de líneas en el programa. </p><p>Para utilizarlas simplemente se hace un llamado a la función. Las funciones pueden estar dentro del mismo shell script, o en un archivo aparte. Cuando se escriben las funciones en un archivo aparte, es muy importante utilizar el comando "." (punto) para cargarlas en memoria. Si no se cargan en memoria de esta manera, las funciones no estarán disponibles. </p><p>Ejemplo: </p> <pre>#<br /># Cargando las funciones en memoria<br />#<br />. /home/jose/funciones/funciones-arch.sh<br /></pre> <a name="Uso"></a><h3> Uso </h3> <p>La sintaxis para utilizar funciones es muy sencilla y no agrega mayor dificultad. El modo de uso se remite a definir la función especificando el nombre y parentesis que abren y cierran. Todos los comandos que involucran la función se encierran con llaves. </p><p>Ejemplo: </p><p>(archivo: lib/arch.sh) </p> <pre>#<br /># Funciones para manipulación de archivos<br />#<br />borrar ()<br />{<br />arch=$1<br />if [ -z "$arch" ]<br />then<br />echo "No se recibió ningún archivo"<br />return 2<br />else<br />if [ -f "$arch" ]<br />then<br /> if [ -w "$arch" ]<br /> then<br /> rm -i $arch<br /> else<br /> echo "No tengo permisos para borrar $arch"<br /> fi<br />else<br /> echo "$arch no es un archivo"<br />fi<br />fi<br />}<br /></pre> <p>(archivo: principal.sh) </p> <pre>#!/bin/bash<br />#<br /># Programa ejemplo para el uso de funciones en shell script<br />#<br /><br />#<br /># Cargo las funciones en memoria<br />#<br />. lib/arch.sh<br />dir=./<br />for i in $dir/*<br />do<br />borrar $i<br />done<br /></pre> <p>Notas sobre el ejemplo: </p><p>(archivo: lib/arch.sh) </p><p>Esta función toma el archivo a borrar como argumento (arch=$1), verifica que se le haya pasado un argumento realmente (if [ -z "$arch" ]), que un archivo pasado como argumento sea regular (if [ -f "$arch" ]) y que tenga permisos de escritura. En todos los casos de falsedad responde con un mensaje avisando el problema. </p><p>(archivo: principal.sh) </p><p>El programa hace un ciclo con los archivos de un directorio específico (for i in $dir/*) y se los pasa como argumento a la función borrar. </p> <a name="Valores_de_retorno"></a><h3> Valores de retorno </h3> <p>Las funciones pueden devolver valores de error utilizando el comando "return <valor>". En caso de que no se especifique un valor de retorno de esta forma, el valor retornado será el que retorne el último comando ejecutado dentro de la función. Desafortunadamente no es posible asignar el valor retornado en una sola línea, siempre es necesario utilizar la variable especial "$?". </valor></p><p>Ejemplo: </p> <pre>#!/bin/sh<br /><br />func () {<br />return $1<br />}<br /><br />func 0<br />echo "ret: ($?)"<br />func 1<br />echo "ret: ($?)"<br />func 2<br />echo "ret: ($?)"<br />func 3<br />echo "ret: ($?)"<br /></pre> <a name="Variables_locales_a_la_funci.C3.B3n"></a><h3> Variables locales a la función </h3> <p>Existe la posibilidad de utilizar variables locales a la función, esto significa que la variable solamente va a existir durante la ejecución de la función. </p><p>Para crear una variable local a la función se utilizar el operador "local <nombre_de_variable>". </nombre_de_variable></p><p>Ejemplo: </p> <pre>func () {<br />local x<br />x=$1<br />echo "Dentro de la función \$x vale ($x)"<br />}<br /><br />echo "Antes de ejecutar la función \$x vale ($x)"<br />func HOLA!!<br />echo "Después de ejecutar la función \$x vale ($x)"<br /></pre> <a name="Operaciones_Aritm.C3.A9ticas"></a><h2> Operaciones Aritméticas </h2> <p>Existen varias formas de calcular valores dentro de un shell script. Tradicionalmente, estos cálculos se hicieron con programas externos, esto generaba un retardo inmenso en la ejecución del shell script. </p><p>Hoy los nuevos intérpretes traen la posibilidad de hacer cálculos internamente. Para esto se utiliza una sintaxis especial, y es muy importante que los valores de las variables que utilicen para hacer estos cálculos sean números únicamente. </p> <a name="Uso_2"></a><h3> Uso </h3> <p>La sintaxis para hacer operaciones aritméticas es la siguiente: </p> <pre>$[<expresión>]<br /></expresión></pre> <p>Las operaciones que se pueden realizar son: </p> <ul><li> suma $((1+1)) </li><li> resta $((2-1)) </li><li> multiplicación $((2*2)) </li><li> división $((2/2]) </li><li> otras como suma de bits, sacar el módulo, evaluación de igualdad, etc. </li></ul> <p>Ejemplo: </p> <pre>#!/bin/sh<br />#<br /># Operaciones aritméticas<br />#<br />x=2<br />tot=$[$x+1]<br />echo "tot: ($tot)"<br /></pre> <a name="bc"></a><h3> <code>bc</code> </h3> <p>A veces hay conjuntos de herramientas que nos suenan y no las aprovechamos al máximo. Quizás una de esas sea <code>bc</code>. La calculadora que podemos usar desde la consola, que aparte de sumar y restar puede realizar cálculos con una precisión de varios decimales, cambiar de base numérica o programarla, etc. veremos como... </p><p>Si ejecutamos bc veremos: </p> <pre>$ bc<br />bc 1.06<br />Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc.<br />This is free software with ABSOLUTELY NO WARRANTY.<br />For details type `warranty'.</pre> <p>Acá espera que trabajemos desde la entrada estándar, por ejemplo: </p> <pre>4+8<br />12<br />scale=3<br />27/68<br />.397<br />halt<br /></pre> <p>Sabe sumar (y restar, dividir, multiplicar; sin problemas). </p> <a name="Variables_2"></a><h4> Variables </h4> <p>Si queremos que trabaje con decimales, asignaremos un valor a la variable <code>scale</code>. </p> <pre>scale=3<br />2/3<br />.666<br /></pre> <p>También podemos hacer: </p> <pre>scale=9;2/3<br />.666666666<br /></pre> <p>Al ser <code>scale</code> una variable más, podemos consultar su valor sencillamente escribiéndola: </p> <pre>scale<br />3<br />#o también usando print<br />print scale<br />3<br /></pre> <p>Otro ejemplo de usos de variables podría ser: </p> <pre>scale=5<br />variable=3<br />100/variable<br />33.33333<br /></pre> <p>Hay una variable especial llamada <code>last</code>, almacena el resultado de la última operación: </p> <pre>100/3<br />33.33333<br />last*2<br />66.66666<br /></pre> <a name="Cambios_en_la_base_num.C3.A9rica"></a><h4> Cambios en la base numérica </h4> <p>Hay dos variables especiales que son <code>ibase</code> y <code>obase</code> que definen la base de entrada y de salida de los números, respectivamente. </p><p>Si queremos calcular el número 5 en base 10 (decimal) a base 2 (binario), haremos: </p> <pre>obase=2<br />5<br />101<br /></pre> <p>Si queremos pasar de binario a hexadecimal: </p> <pre>obase=16<br />ibase=2<br />11111111<br />FF<br /></pre> <a name="Otras_operaciones_matem.C3.A1ticas"></a><h4> Otras operaciones matemáticas </h4> <p>Podemos usar también <code>sqrt</code>, <code>2^3</code>, etc. </p><p>Si queremos tener operaciones matemáticas más complejas tenemos que ejecutar el <code>bc -l</code> para cargar la librería matemática: </p> <pre>s (x) Seno de x, en radianes<br />c (x) Coseno de x<br />a (x) Arcotangente de x<br />l (x) Logaritmo neperiano de x<br />e (x) Exponencial de x<br />j (n,x) Función de Bessel de un entero de orden n de x<br /></pre> <p><code>Aplicación en un script</code> </p><p>Si queremos pedir que el usuario teclee algo por teclado, la función es <code>read</code>. Por tanto. </p> <pre>variable=read()<br /></pre> <p>Esperará que tecleemos algo y lo pondrá en <code>variable</code>. </p><p>También podemos hacer un programa en un archivo y ejecutarlo: </p> <pre>print "Hola\n"<br />print "Escribe tu año de nacimiento\n"<br />nacimiento=read()<br />edad=2003-nacimiento<br />print edad<br />print " años\n"<br />halt<br /></pre> <p>Y lo ejecutamos con <code>bc -q archivo.bc</code> (el <code>-q</code> es para que no muestre el Copyright) estaremos preguntando el año nacimiento y mostrando la edad. </p><p>Ahora un ejemplo definiendo una función, pasándole un parámetro y retornándolo. Veremos que es totalmente intuitivo: </p> <pre>define mayor_edad(edad) {<br /> if (edad <>= 18)<br /> return 1<br />}<br /><br />print "Dí tus edad\n"<br />edad=read()<br /><br />if (mayor_edad(edad))<br /> print "Eres mayor de edad\n"<br /><br />if (!mayor_edad(edad))<br /> print "Eres menor de edad\n"<br /><br />halt</pre> <p>Un último ejemplo, con un <code>for</code>: </p> <pre>for (i=0;i<10;i++)> <p>Observemos en la <code>,</code> para separar la variable y la cadena en el print. </p><p>Para salir </p> <pre>halt<br /></pre> <p>Otra forma muy útil en los scripts es: </p> <pre>resultado=$(echo "scale=3;2/3" | bc)<br /></pre> <a name="Operaciones_l.C3.B3gicas_y_de_comparaci.C3.B3n"></a><h2> Operaciones lógicas y de comparación </h2> <p><br /></p> <a name="test"></a><h3> test </h3> <p>Para usar if podemos usar un nuevo elemento, los corchetes que evalúan las condiciones, esto esta basado directamente en test. Y éste nos sirve para comparar variables. </p><p>Por ejemplo: </p> <dl><dd>-lt Menor que </dd><dd>-eq Igual que </dd><dd>-gt Mayor que </dd><dd>-le Menor o igual que </dd><dd>-ge Mayor o igual que </dd><dd>-ne No coinciden </dd><dd>-a Operador lógico and </dd><dd>-o Operador lógico or </dd><dd>!= Distinto </dd></dl> <p>Sintáxis: </p> <pre>exp1 operador exp2<br /></pre> <p>Uso de test: </p> <pre>test 8 -lt 9<br /></pre> <p>Usando variables en test: </p> <pre>variable1=5<br />variable2=3<br />test $variable1 -gt $variable2<br /></pre> <p>Otra forma muy útil de uso de test (si 3 es menor que 5): </p> <pre>[ 3 -lt 5 ]<br /></pre> <p>O (si $HACER es distinto de 1): </p> <pre>[ $HACER != 1 ]<br /></pre> <p>Ejemplo: </p> <pre>#!/bin/bash<br />variable1=5<br />variable2=3<br />[ $variable1 -lt $variable2 ]<br />echo $?<br /></pre> <p>Aqui hemos evaluado dos variables para ver si la variable1 era menor que la variable2 y para ver el resultado hemos acudido a la “variable de retorno”, que nos mostrara 0 o 1. </p><p>Cuando necesitamos utilizar la negación, debemos usar el signo ! </p><p>Ejemplo: </p> <pre> if [ ! -x $FILE ]<br />then<br />chmod +x $FILE<br />else<br />echo "$FILE es ejecutable"<br />fi<br /></pre> <p>Si el archivo no es ejecutable, le damos permiso de ejecución, sino, imprimimos el mensaje por pantalla </p> <a name="Interacci.C3.B3n_con_el_usuario"></a><h2> Interacción con el usuario </h2> <p>Muchos programas no serían factibles si no tuviéramos algún mecanismo para interactuar con el usuario, ya sea un simple "Presione Enter para continuar" o algo más sofisticado, como una lista de opciones de las cuales escoger. </p><p>Cuando el programa está escrito en shell, es muy sencillo lograr ambas cosas, utilizando dos herramientas: read y dialog. </p> <a name="read"></a><h3> read </h3> <p>El comando read es muy sencillo. Le indicamos que pida el valor de una variable al usuario, el usuario escribe una línea de texto (es decir, cualquier cosa hasta que presione enter), y la variable toma el valor que el usuario ingresó. </p><p>Ejemplo: </p> <pre>[jose@xtech experto]$ read V<br />Hola mundo!<br />[jose@xtech experto]$ echo $V<br />Hola mundo!<br />[jose@xtech experto]$<br /></pre> <p>Si deseamos sólo un "Presione enter para continuar" es exactamente lo mismo, simplemente ignoramos el valor de la variable :-) </p> <a name="dialog"></a><h3> dialog </h3> <p>Dialog es un programa que crea una "interfaz" para que el usuario interactúe, y entrega por la salida estándar el resultado de la acción del usuario, variable <b>$?</b>. </p><p>Puede producir preguntas si/no, menú, lista, calendario, barra de progreso, diálogo de contraseña, cuadro de texto, cuadro de mensaje, etc. Recomendamos leer la documentación del manual (man dialog) o ejecutar </p> <pre>dialog --help<br /></pre> <p>Aparte del programa "dialog", que produce una salida por consola, puede ser que tenga en su sistema un programa "gdialog", Xdialog o "dldialog" (dependiendo del Linux que utilice), que son lo mismo, solo que abren una ventana gráfica, por X11, para el diálogo. </p><p>Sintaxis: </p> <pre>dialog <opciones> { --opciones específicas }<br /></opciones></pre> <p>Ejemplo 1 (Diálogo "yesno"): </p> <pre>[jose@xtech experto]$ dialog --yesno "Desea salir?" 6 30<br /></pre> <p>Produce esto: </p> <div class="center"><div class="floatnone"><span><a href="http://wiki.xtech.com.ar/index.php/Imagen:Dialog1.png" class="image" title=""><img src="http://wiki.xtech.com.ar/images/8/86/Dialog1.png" alt="" longdesc="/index.php/Imagen:Dialog1.png" height="300" width="450" /></a></span></div></div> <p>Los argumentos 6 y 30 corresponden a la altura y ancho, respectivamente, del cuadro. En su versión X11, sería: </p> <pre>[jose@xtech experto]$ gdialog --yesno "Desea salir?"<br /></pre> <p>Y se vería así: </p> <div class="center"><div class="floatnone"><span><a href="http://wiki.xtech.com.ar/index.php/Imagen:Gdialog1.png" class="image" title=""><img src="http://wiki.xtech.com.ar/images/4/4c/Gdialog1.png" alt="" longdesc="/index.php/Imagen:Gdialog1.png" height="157" width="236" /></a></span></div></div> <p>Ejemplo 2 (Diálogo "inputbox"): </p> <pre>[jose@xtech experto]$ dialog --inputbox "Ingrese su nombre" 9 30 Juan<br /></pre> <p>Note que agregamos el argumento "Juan", que será el valor predeterminado para este inputbox: </p> <div class="center"><div class="floatnone"><span><a href="http://wiki.xtech.com.ar/index.php/Imagen:Dialog2.png" class="image" title=""><img src="http://wiki.xtech.com.ar/images/6/62/Dialog2.png" alt="" longdesc="/index.php/Imagen:Dialog2.png" height="300" width="450" /></a></span></div></div> <p>O también: </p> <pre>[jose@xtech experto]$ gdialog --inputbox "Ingrese su nombre"<br /></pre> <p>Produce esto: </p> <div class="center"><div class="floatnone"><span><a href="http://wiki.xtech.com.ar/index.php/Imagen:Gdialog2.png" class="image" title=""><img src="http://wiki.xtech.com.ar/images/4/40/Gdialog2.png" alt="" longdesc="/index.php/Imagen:Gdialog2.png" height="134" width="236" /></a></span></div></div> <p>El caso del "inputbox" suele tener aparejado la necesidad de asignar ese valor ingresado a una variable. Para hacer eso tendremos que usar la siguiente sintáxis: </p> <pre>VARIABLE=`gdialog --inputbox "Ingrese su nombre" 2>&1`<br /></pre> <p>Note que pusimos todo el comando entre comillas invertidas para que reemplace el mismo por el valor que el comando representa después de ejecutarse. </p><p>El <code>2>&1</code> es un truco que permite redirigir la STDERR hacia la STDOUT, ya que el valor ingresado sale por la salida de error en vez de la estándar. </p><p>Ejemplo 3 (Diálogo "msgbox"): </p> <pre>[jose@xtech experto]$ dialog --msgbox "Esto es muy bueno para mensajes" 5 50<br /></pre> <p>Produce esto: </p> <div class="center"><div class="floatnone"><span><a href="http://wiki.xtech.com.ar/index.php/Imagen:Dialog3.png" class="image" title=""><img src="http://wiki.xtech.com.ar/images/6/62/Dialog3.png" alt="" longdesc="/index.php/Imagen:Dialog3.png" height="300" width="450" /></a></span></div></div> <p>O también: </p> <pre>[jose@xtech experto]$ gdialog --msgbox "Esto es muy bueno para mostrar mensajes<br />largos o de advertencia"<br /></pre> <p>Produce esto: </p> <div class="center"><div class="floatnone"><span><a href="http://wiki.xtech.com.ar/index.php/Imagen:Gdialog3.png" class="image" title=""><img src="http://wiki.xtech.com.ar/images/0/0d/Gdialog3.png" alt="" longdesc="/index.php/Imagen:Gdialog3.png" height="157" width="329" /></a></span></div></div> <div class="editsection" style="float: right; margin-left: 5px;"><a name="Ejercicio_1"></a></div><h3> Ejercicio 1 </h3> <p>Descompresión Automática de Archivos </p> <hr /> <p>Se debe ingresar el nombre de un archivo por la línea de comandos, y el script debe reconocer con qué herramienta está comprimida y proceder a descomprimirlo. Si el archivo no está comprimido, el script deberá devolver un mensaje de error. </p><p>TIP: utilizar el programa "file" </p> <a name="Resoluci.C3.B3n"></a><h5> Resolución </h5> <pre>#!/bin/bash<br />#<br /># Decompresor inteligente<br /><br />if [ -z $1 ]<br />then<br />#<br /># Si no hay argumento salimos del script con error "1!<br />#<br /> echo "Debe ingresar el nombre del archivo"<br /> exit 1<br />else<br /> ARCHIVO=$1<br />fi<br /><br />TIPO=`file $ARCHIVO`<br />#<br /># Verificamos el tipo de archivo<br /># Salida del comando file:<br />#<br /># Para GZIP<br /># file ejemplo.gz<br /># ejemplo.gz: gzip compressed data, was "ejemplo",from Unix<br />#<br /># Para BZIP2<br /># file ejemplo.bz2<br /># ejemplo.bz2: bzip2 compressed data, block size =900k<br /><br /><br />case $TIPO in<br />"${ARCHIVO}: bzip2"*)<br /> bunzip2 $ARCHIVO<br /> ;;<br />"${ARCHIVO}: gzip"*)<br /> gunzip $ARCHIVO<br /> ;;<br />*)<br /> echo "No esta comprimido"<br /> ;;<br />esac<br /><br /><br />exit 0<br /><br /></pre> <a name="Ejercicio_2"></a><h3> Ejercicio 2 </h3> <p>Listado del Directorio Home </p> <hr /> <p>Se debe realizar un listado recursivo del directorio personal, y guardar la información en un archivo. Luego debe comprimirse ese archivo y preguntar al usuario en qué directorio quiere guardar el archivo comprimido. </p> <a name="Resoluci.C3.B3n_2"></a><h5> Resolución </h5> <pre>#/bin/bash<br /># Listado del Home<br /><br /># Iniciamos la variable.<br />rm -rf ./listado.txt<br />touch ./listado.txt<br />ARCHIVO="./listado.txt"<br /><br /># Listamos los archivos y los guardamos en el archivo<br />ls -1 ~ >> $ARCHIVO<br />cat $ARCHIVO<br /><br /># Comprimimos el archivo como tar.gz<br />tar -czvf listado.tar.gz $ARCHIVO<br />COMPRIMIDO=listado.tar.gz<br /><br /># Preguntamos al usuario donde desea guardar ese archivo.<br />echo "Por favor, ingrese el PATH donde desea almacenar $COMPRIMIDO."<br />read PATH<br />echo $PATH<br />echo $COMPRIMIDO<br /><br /># Guardamos el archivo donde se indico.<br />mv $COMPRIMIDO $PATH<br /><br /># Se imprime donde se guardo el archivo.<br />echo "Se guardo $COMPRIMIDO en $PATH"<br /><br />exit 0<br /></pre> <a name="Ejercicio_3"></a><h3> Ejercicio 3 </h3> <p>Ralización de un backup diario </p> <hr /> <p>Se debe archivar como "tarball" (archivo .tar.gz) todos los archivos del directorio personal. Esto se debe hacer grabando un CR regrabable. </p> <a name="Resoluci.C3.B3n_1"></a><h5> Resolución 1 </h5> <pre>#!/bin/bash<br />#<br /># Se limpia la pantalla para tener una salida más prolija.<br /><br />clear<br /><br /># Se procede a desmontar el CD por si alguien olvidó hacerlo.<br /><br />echo "*** Desmontando CDROM ***"<br />umount /mnt/cdrom<br /><br /># Se limpia nuevamente la pantalla.<br /><br />clear<br /><br /># Se anuncia al usuario que se comienza a borrar el CD.<br /><br />echo "*** Borrando CDROM ***"<br />echo "Por favor, sea paciente. Este proceso puede demorar hasta 20 minutos."<br />echo " "<br /><br /># Se utiliza el programa cdrecord para borrar el CD.<br /><br />cdrecord -v -dev=ATAPI:0,0,0 -blank=fast > /dev/null<br /><br /># Se borra nuevamente la pantalla.<br /><br />clear<br /><br /># Se anuncia por pantalla el comienzo del backup del directorio.<br /><br />echo "*** Comenzando el backup ***"<br /><br /># Se crea un directorio temporal para almacenar el backup.<br /><br />mkdir /tmp/backup02<br /><br /># Se limpia la pantalla.<br /><br />clear<br /><br /># Se anuncia por pantalla que se comienza a salvar el directorio personal.<br /><br />echo "*** Backup del directorio Personal ***"<br /><br /># Se comprime el directorio personal.<br /><br />tar -cvzf /tmp/backuo02/home.tar.gz ~/ > /dev/null<br /><br /># Se limpia la pantalla.<br /><br />clear<br /><br /># Se anuncia por pantalla que se realiza el ISO a grabar.<br /><br />echo "*** Creando archivo de Resguardo ***"<br /><br /># Se crea la imágen ISO.<br /><br />mkisofs -r -J -o backup02.iso backup02/ > /dev/null<br /><br /># Se borra la pantalla.<br /><br />clear<br /><br /># Se anuncia el comiezo de la grabación del CD.<br /><br />echo "*** Comenzando la grabacion del CDROM ***"<br />echo "Por favor, sea paciente. Este proceso puede tardar hasta 30 minutos."<br />echo " "<br /><br /># Se comienza a grabar el CD con cdrecord.<br /><br />cdrecord -v speed=4 dev=ATAPI:0,0,0 -data backup02.iso > /dev/null<br /><br /># Se anuncia en pantalla el borrado de los archivos auxiliares.<br /><br />echo "*** Limpiando archivos extras ***"<br />rm -Rf /tmp/backup02.iso > /dev/null<br />rm -Rf /tmp/backup02 > /dev/null<br /><br /># Se desmonta el CD.<br /><br />umount /mnt/cdrom<br /><br /># Se limpia la pantalla.<br /><br />clear<br /><br /># Se anuncia que el proceso finalizó con éxito.<br /><br />echo "*** Se realizo el backup con exito ***"<br /><br />exit 0<br /></pre> <a name="Resoluci.C3.B3n_2_.28backup_por_SAMBA.29"></a><h5> Resolución 2 (backup por SAMBA) </h5> <pre>#!/bin/bash<br />#<br /># Se limpia la pantalla para tener una salida más prolija.<br /><br />clear<br /><br /># Se procede a desmontar el CD por si alguien olvidó hacerlo.<br /><br />echo "*** Desmontando CDROM ***"<br />umount /mnt/cdrom<br /><br /># Se limpia nuevamente la pantalla.<br /><br />clear<br /><br /># Se monta por red el CD de un cliente windows.<br /><br />smbmount //pc3/d /mnt/cdrom -o username=usuario,password=contraseña<br /><br /># Se borra nuevamente la pantalla.<br /><br />clear<br /><br /># Se anuncia por pantalla el comienzo del backup del directorio.<br /><br />echo "*** Backup del directorio Personal ***"<br /><br /># Se comprime el directorio personal.<br /><br />tar -cvzf /mnt/cdrom/home.tar.gz ~/ > /dev/null<br /><br /># Se desmonta el CD.<br /><br />umount /mnt/cdrom<br /><br /># Se limpia la pantalla.<br /><br />clear<br /><br /># Se anuncia que el proceso finalizó con éxito.<br /><br />echo "*** Se realizo el backup con exito ***"<br /><br />exit 0<br /></pre></pre>Braianhttp://www.blogger.com/profile/13742241213281007972noreply@blogger.com3tag:blogger.com,1999:blog-6301813106398565950.post-45949661582821570562008-11-04T15:34:00.000-08:002008-11-04T15:46:34.897-08:00Richard Stallman en Buenos AiresTanto tiempo sin dedicarme al blog, he regresado =P y nada mejor que mostrando algunas fotos de Richard Stallman. Ayer lunes 3 de noviembre el padre del movimiento del software libre dió una conferencia en el Salón Auditorio del Anexo de la Honorable Cámara de Diputados de la Nación. Fué imperdible...no le hagan caso a la fecha de la foto, porque está mal. Saludos!<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgl6JnKs_A6jm0nwhLz9dmCX-s_2IryYad7Ew7oUh49pXkMTlnnceFyMC4vd5kXBqy0LhZ0cO9c_YrKD1ErvBt6YteDhxBgUbPnVrW_caaI44edB7aQ3T5YCVk5x8IwdEQ41-ATYoU2Gg4/s1600-h/SANY0609.JPG"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgl6JnKs_A6jm0nwhLz9dmCX-s_2IryYad7Ew7oUh49pXkMTlnnceFyMC4vd5kXBqy0LhZ0cO9c_YrKD1ErvBt6YteDhxBgUbPnVrW_caaI44edB7aQ3T5YCVk5x8IwdEQ41-ATYoU2Gg4/s320/SANY0609.JPG" alt="" id="BLOGGER_PHOTO_ID_5264952215039069170" border="0" /></a><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggSMLBWcAKVVPMyAiR96bA1EnGESTCmXUuKEUefOEkLaAEg6LldzyEQq1rIQJikJ9rEs5U_IW4Xjv0hX_vLQbutVf5L3J5sVgRhCjtydeDYgr9A5ObDaMe4_Glq8N38vCF8s1C0vp4AR0/s1600-h/SANY0607.JPG"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggSMLBWcAKVVPMyAiR96bA1EnGESTCmXUuKEUefOEkLaAEg6LldzyEQq1rIQJikJ9rEs5U_IW4Xjv0hX_vLQbutVf5L3J5sVgRhCjtydeDYgr9A5ObDaMe4_Glq8N38vCF8s1C0vp4AR0/s320/SANY0607.JPG" alt="" id="BLOGGER_PHOTO_ID_5264951892640219042" border="0" /></a><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikIdtqbNg7ADcy_-th9nNROSgUBWDiMBodMRhChZF3bqmaxfRQMaaSeKVcp8dnqzt38RJFe8LO2tgGTwJ4GdWAiVtc4C9vSjwuATLc2pEJll4AZ04wN2uFjo9TD80jpCg-NYnXwnCBjWM/s1600-h/SANY0596.JPG"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikIdtqbNg7ADcy_-th9nNROSgUBWDiMBodMRhChZF3bqmaxfRQMaaSeKVcp8dnqzt38RJFe8LO2tgGTwJ4GdWAiVtc4C9vSjwuATLc2pEJll4AZ04wN2uFjo9TD80jpCg-NYnXwnCBjWM/s320/SANY0596.JPG" alt="" id="BLOGGER_PHOTO_ID_5264951747629941842" border="0" /></a><br />El video de San Ignacious que alguién subío a youtube =) :<br /><br /><div align="center"><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/ozyqdXRoALg&hl=en&fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/ozyqdXRoALg&hl=en&fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object></div>Braianhttp://www.blogger.com/profile/13742241213281007972noreply@blogger.com2tag:blogger.com,1999:blog-6301813106398565950.post-1919292190490057422008-09-10T16:29:00.000-07:002008-09-10T16:32:19.470-07:00RAP del LHC - Gran Colisionador de Hadrones<object height="344" width="425"><param name="movie" value="http://www.youtube.com/v/n_FCMejFkMg&hl=es&fs=1"><param name="allowFullScreen" value="true"><embed src="http://www.youtube.com/v/n_FCMejFkMg&hl=es&fs=1" type="application/x-shockwave-flash" allowfullscreen="true" height="344" width="425"></embed></object>Braianhttp://www.blogger.com/profile/13742241213281007972noreply@blogger.com1tag:blogger.com,1999:blog-6301813106398565950.post-60537472878203547832008-08-23T10:43:00.000-07:002008-08-23T10:47:22.983-07:00Como funciona la web<span class="todo">El libro que el lector tiene en sus manos es producto de la experiencia del equipo de científicos que trabaja en el Centro de Investigación de la Web. Hemos querido exponer al gran público no sólo lo que hacemos, sino sobre todo, cómo funciona ese producto tan propio de nuestros tiempos que es la Web. Este libro pretende, a nivel de divulgación, dar a conocer las diferentes facetas que están detrás del funcionamiento de la Web.<br /><br />Dr. Gonzalo Navarro Badino<br />Director<br /></span><br /><div style="text-align: center;"> <a href="http://www.ciw.cl/libroWeb-NV.pdf"> <img src="http://www.ciw.cl/libroweb/webcover.png" alt="Cubierta del libro" /></a><br /><br /><a href="http://www.ciw.cl/libroWeb-NV.pdf"> <b>Cómo funciona la Web (pdf: 5,1 mb)</b> </a> <br /></div><br />Via: <a href="http:/www.ciw.cl/libroweb/">Ciw.cl</a><br /> <span class="todo"></span>Braianhttp://www.blogger.com/profile/13742241213281007972noreply@blogger.com1tag:blogger.com,1999:blog-6301813106398565950.post-9158521527727153402008-08-22T14:20:00.000-07:002008-08-22T14:28:31.325-07:00Hitler y Phelps. Willie Oviedo confirma la física cuántica.<p>CARACAS (Reuters) - Parecería imposible relacionar al dictador alemán Adolf Hitler con el nadador estadounidense Michael Phelps en los Juegos Olímpicos de Múnich 1972, pero un locutor deportivo de una televisión estatal venezolana lo logró en una monumental confusión que ha hecho furor en la red.</p><p>El comentarista Willie Oviedo, de la Televisora Social Venezolana (TVes), hacía unos insólitos comentarios históricos para introducir la prueba de relevos 4x100 metros combinados de los Olímpicos de Pekín, con la que Phelps logró la inédita hazaña de ganar ocho preseas de oro en un mismo torneo.</p><p>"Jamás en unos Juegos Olímpicos, ningún mortal, ningún ser viviente ha podido colgarse la cifra de ocho medallas doradas. Unicamente lo logró Michael Phelps en los Olímpicos de Múnich en el año de 1972, allá en la Alemania de Hitler, donde ni siquiera él mismo quiso darle las medallas," dijo Oviedo.</p><p>El narrador confundió a Phelps, de 23 años, con su compatriota Mark Spitz, quien efectivamente ganó siete oros hace 36 años en las piscinas de Múnich.</p><p>Pero también mezcló estas pruebas con los Juegos de 1936 en Berlín, cuando Hitler prefirió no estar presente en las ceremonias de premiación donde el atleta afroamericano Jesse Owens recibió cuatro medallas de oro, en momentos en que los germanos exaltaban a la "raza aria" frente a la negra.</p><p>Una portavoz de TVes no quiso comentar a Reuters si la narración era real, pero criticó los montajes que se han realizado en internet para burlarse del traspié del periodista.</p><p>La narración de Oviedo acumula decenas de miles de visitas en YouTube (http://www.youtube.com/watch?v=jZEItFOKlHc) y ha corrido como la pólvora en blogs, foros de internet y correos electrónicos, e incluso se han realizado montajes de video con risas enlatadas.</p><p>El error también ha propiciado que los críticos del presidente Hugo Chávez arrecien sus ataques contra TVes, la cadena de televisión pública que ocupó la señal del canal opositor RCTV luego de que el mandatario no le renovara la licencia de transmisión en mayo del 2007.</p><p>(Por Enrique Andrés Pretel; Editado por Patricia Avila)</p><p>Visto en <a href="http://ar.sports.yahoo.com/china2008/noticias/22082008/21/noticias-deportes-hitler-quiso-darle-medallas-phelps-denuncia-tv-venezolana.html">Yahoo!</a><br /></p><br /><br /><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/jZEItFOKlHc&hl=en&fs=1"><param name="allowFullScreen" value="true"><embed src="http://www.youtube.com/v/jZEItFOKlHc&hl=en&fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"></embed></object>Braianhttp://www.blogger.com/profile/13742241213281007972noreply@blogger.com0tag:blogger.com,1999:blog-6301813106398565950.post-86626409716601173542008-08-18T06:10:00.000-07:002008-08-18T06:23:58.229-07:00Problemas para iniciar httpdAyer instalé Apache 2 (apache-2.2.9-4) en Archlinux, pero por alguna razón en particular no iniciaba..<br /><br />█▓▒░root@localhost█▓▒░ mar ago 19 10:12:34<br />/etc/rc.d/ <span style="color: rgb(51, 51, 255);">/etc/rc.d/httpd start</span><br />:: Starting HTTP Daemon <span style="color: rgb(255, 0, 0);"> [FAIL] </span><br /><br />Ni en los logs apareciá el problema, nada, la verdad en "pelotas estaba". Hasta que se me ocurrió hacer:<br /><br />█▓▒░root@localhost█▓▒░ mar ago 19 10:12:53<br />/etc/rc.d/ <span style="color: rgb(51, 51, 255);">apachectl -t</span><br /><span style="color: rgb(255, 0, 0);">httpd: bad user name http</span><br /><br /><br />Podemos ver que nos dice "httpd: bad user name http", me di cuenta que no tengo ningún usuario llamado de esa manera. Creemos un usuario con ese nombre...:<br /><br />█▓▒░root@localhost█▓▒░ mar ago 19 10:14:08<br />/etc/rc.d/<span style="color: rgb(51, 51, 255);"> adduser http</span><br /><br />Login name for new user: http<br /><br />User ID ('UID') [ defaults to next available ]:<br /><br />Initial group [ users ]:<br /><br />Additional groups (comma separated) []:<br /><br />Home directory [ /home/http ]<br /><br />Shell [ /bin/bash ]<br /><br />Expiry date (YYYY-MM-DD) []:<br /><br />New account will be created as follows:<br /><br />---------------------------------------<br />Login name.......: http<br />UID..............: [ Next available ]<br />Initial group....: users<br />Additional groups: [ None ]<br />Home directory...: /home/http<br />Shell............: /bin/bash<br />Expiry date......: [ Never ]<br /><br />This is it... if you want to bail out, hit Control-C. Otherwise, press<br />ENTER to go ahead and make the account.<br /><br /><br />Creating new account...<br /><br /><br />Cambiando la información de usuario para http<br />Introduzca el nuevo valor, o presione ENTER para el predeterminado<br /> Nombre completo []:<br /> Número de habitación []:<br /> Teléfono del trabajo []:<br /> Teléfono de casa []:<br /> Otro []:<br />Introduzca la nueva contraseña de UNIX:<br />Vuelva a escribir la nueva contraseña de UNIX:<br />passwd: contraseña actualizada correctamente<br /><br /><br />Account setup complete.<br /><br />Iniciamos Apache...<br /><br />█▓▒░root@localhost█▓▒░ mar ago 19 10:12:34<br />/etc/rc.d/ <span style="color: rgb(51, 51, 255);">/etc/rc.d/httpd start</span><br />:: Starting HTTP Daemon <span style="color: rgb(255, 0, 0);"> [FAIL] </span><br /><br />Pufff otra vez...<br /><br />█▓▒░root@localhost█▓▒░ mar ago 19 10:16:05<br />/etc/rc.d/<span style="color: rgb(51, 51, 255);"> apachectl -t</span><br />httpd: <span style="color: rgb(255, 0, 0);">bad group name http</span><br /><br /><br />Ahora nos dice que el grupo no existe...lo creamos también..<br /><br />█▓▒░root@localhost█▓▒░ mar ago 19 10:16:11<br />/etc/rc.d/ <span style="color: rgb(51, 51, 255);">groupadd http</span><br /><br />Agregamos el usuario http al grupo http:<br /><br />█▓▒░root@localhost█▓▒░ mar ago 19 10:18:16<br />/etc/rc.d/ <span style="color: rgb(51, 51, 255);">gpasswd -a http http</span><br />Añadiendo al usuario http al grupo http<br /><br />Iniciamos Apache:<br /><br />█▓▒░root@localhost█▓▒░ mar ago 19 10:18:23<br />/etc/rc.d/ <span style="color: rgb(51, 51, 255);">/etc/rc.d/httpd start</span><br />:: Starting HTTP Daemon <span style="color: rgb(0, 153, 0);"> [DONE] </span><br />█▓▒░root@localhost█▓▒░ mar ago 19 10:19:09<br /><br />Este inconveniente me quitó 3 horas de mi vida =P. Espero que les sirva. Saludos!Braianhttp://www.blogger.com/profile/13742241213281007972noreply@blogger.com0tag:blogger.com,1999:blog-6301813106398565950.post-81016031723311985072008-08-17T08:38:00.000-07:002008-08-17T08:59:39.276-07:00Bashish y aléjate de la consola...oscura claro.<a href="http://bashish.sourceforge.net/index.html">Bashish</a> es un tema para terminales de texto. Puede cambiar los colores, tipo de letra,<br />la transparencia y la imagen de fondo para cada aplicación. Adicionalmente<br />Bashish puede funcionar en bash, zsh y tcsh.<br /><br />Para instalarlo en arch:<br /><pre><a href="http://braianet.blogspot.com/2008/03/yaourt-frontend-para-pacman-con-ms.html">yaourt</a> -S bashish</pre>Ejemplos:<br /><br /><img style="width: 737px; height: 381px;" alt="A red sky with the siluette of a city in dawn.." src="http://bashish.sourceforge.net/urbandawn.png" /><br /><div style="text-align: center;"> <span style="font-weight: bold;">urbandawn </span><br /></div> <br /> <img style="width: 561px; height: 393px;" alt="a snake crawling up to the prompt" src="http://bashish.sourceforge.net/conda.png" /><br /><div style="text-align: center;"> <span style="font-weight: bold;">conda</span><br /></div> <br /> <br /> <img style="width: 806px; height: 363px;" alt="3D steel like finish" src="http://bashish.sourceforge.net/steel.png" /><br /><div style="text-align: center;"> <span style="font-weight: bold;">bluesteel</span><br /></div> <br /> <br /> <img style="width: 577px; height: 434px;" alt="A new poker hand each time the prompt is pressed." src="http://bashish.sourceforge.net/poker.png" /><br /><div style="text-align: center;"> <span style="font-weight: bold;">poker </span><br /></div> <br /> <br /> <img style="width: 621px; height: 400px;" alt="an ascii-art prompt similar to the lcars interface from startrek" src="http://bashish.sourceforge.net/lcars.png" /><br /><div style="text-align: center;"> <span style="font-weight: bold;">lcars</span><br /></div><br /><img style="width: 560px; height: 325px;" alt="A red square around the terminal" src="http://bashish.sourceforge.net/box.png" /><br /><div style="text-align: center;"> <span style="font-weight: bold;">box </span><br /></div> <br /> <br /> <img style="width: 672px; height: 425px;" alt="Commodore 64 screen with some error messages" src="http://bashish.sourceforge.net/C64.png" /><br /><div style="text-align: center;"> <span style="font-weight: bold;">c64 - ?SYNTAX ERROR</span><br /></div> <br /><br /> <div style="text-align: center;"><img style="width: 577px; height: 328px;" alt="Fading prompt" src="http://bashish.sourceforge.net/bashprompt-fade.png" /><br /> fade<br /></div><div style="text-align: center;"> <br /> <br /> <img style="width: 624px; height: 360px;" alt="A cow stretched over the whole terminal." src="http://bashish.sourceforge.net/moo.png" /><br /> <span style="font-weight: bold;">moo</span><br /> <br /> <br /> <img style="width: 840px; height: 456px;" alt="Simulation of a 3270 terminal connectiong to IBM MVS" src="http://bashish.sourceforge.net/mvs.png" /><br /> <span style="font-weight: bold;">mvs </span><br /> <br /> <br /> <img style="width: 745px; height: 504px;" alt="pink terminal with saturated flowers" src="http://bashish.sourceforge.net/flower.png" /><br /> <span style="font-weight: bold;">flowerpower </span><br /><br /></div>Braianhttp://www.blogger.com/profile/13742241213281007972noreply@blogger.com6tag:blogger.com,1999:blog-6301813106398565950.post-67770591754616241072008-08-16T09:13:00.000-07:002008-08-16T09:21:05.089-07:00El secreto<p><i>The Secret</i> es una película de <a href="http://es.wikipedia.org/w/index.php?title=Boixnet&action=edit&redlink=1" class="new" title="Boixnet (aún no redactado)">Boixnet</a> y utiliza un formato de película documental para presentar la "<i><a href="http://es.wikipedia.org/wiki/Ley_de_atracci%C3%B3n" title="Ley de atracción">Ley de Atracción</a></i>" Esta ley es el "<a href="http://es.wikipedia.org/wiki/Secreto" title="Secreto">secreto</a>" que, de acuerdo con el argumento, "ha viajado a través de los siglos para alcanzarnos". La película muestra breves fragmentos de película basados en experiencias y entrevistas a un equipo de especialistas en la transformación personal, maestros espirituales, maestros de cosmologia, expertos en generar riqueza, matemáticos, físicos cuánticos, etc.</p> <p>Tal y como muestra la película, los principios de la "<i>Ley de Atracción</i>" plantean que los sentimientos y los pensamientos de las personas se plasman en sus vidas como hechos reales, desde interacciones con el cosmos hasta interacciones entre personas de tipo físico, emocional y profesional. La película también hace referencia a la tendencia de la gente con poder a esconder al público este principio básico. El trailer de la película muestra a algunas personas que "descubrieron el secreto...".</p><p>Via <a href="http://es.wikipedia.org/wiki/El_Secreto">wikipedia.org</a><br /></p><br /><embed id="VideoPlayback" style="width: 400px; height: 326px;" allowfullscreen="true" src="http://video.google.com/googleplayer.swf?docid=-7391854483773129439&hl=es&fs=true" type="application/x-shockwave-flash"></embed><br /><br /><a href="http://video.google.es/videoplay?docid=-7391854483773129439&ei=-sqmSOTyBYWI4QLN7ZQV&q=el+secreto">Ver mas grande</a>Braianhttp://www.blogger.com/profile/13742241213281007972noreply@blogger.com0tag:blogger.com,1999:blog-6301813106398565950.post-19510360292102311912008-08-14T12:12:00.000-07:002008-08-14T12:32:48.200-07:00Manual de la Metodología Abierta de Testeo de Seguridad de ISECOM<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiaGmHi2HIUuhsoYFU2-wVPXyKfjH_zrHd0lCkfNMhdmwJlAbiKkSZaCOHD95VqYfN4CzqjyxvVgrbZM4YXqPRDjGzy1Rtxe3tmHAhiJJRoqfDf9_T4RwWG6j8Yj-7YwoE1rJTrEMUsxhc/s1600-h/logotittle.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiaGmHi2HIUuhsoYFU2-wVPXyKfjH_zrHd0lCkfNMhdmwJlAbiKkSZaCOHD95VqYfN4CzqjyxvVgrbZM4YXqPRDjGzy1Rtxe3tmHAhiJJRoqfDf9_T4RwWG6j8Yj-7YwoE1rJTrEMUsxhc/s320/logotittle.jpg" alt="" id="BLOGGER_PHOTO_ID_5234457713382278642" border="0" /></a><br />La organización <a href="http://www.isecom.org/">ISECOM</a>, es el Instituto para la Seguridad y las Metodologías Abiertas.<br />El "Manual de la Metodología Abierta de Testeo de Seguridad" es un documento que reúne, de forma estandarizada y ordenada, las diversas verificaciones y pruebas que debe realizar un profesional de la seguridad informática durante el desarrollo de las auditorías y verificaciones de la seguridad. Es un documento en constante evolución, fruto del trabajo conjunto de más de 150 colaboradores de todo el mundo.<br /><br />La participación directa de estos profesionales, que desarrollan su actividad profesional en el sector de la seguridad, en la confección de la metodología le permite incorporar los más recientes cambios y nuevas tendencias en el mundo de la seguridad informática.<br /><br />OSSTMM 3.0 lite - Open Source Security Testing Methodology Manual (English): <a href="http://www.isecom.org/mirror/OSSTMM_3.0_LITE.pdf">Descargar</a><br />OSSTMM 2.1 - Manual de la Metodología Abierta de Testeo de Seguridad (<span>Spanish</span>): <a href="http://www.isecom.info/mirror/OSSTMM.http://www.isecom.info/mirror/OSSTMM.es.2.1.pdf">Descargar<br /></a><br /><span style="font-weight: bold;">Metodología para análisis de redes inalámbricas</span><br /><br /> En esta versión especial de la metodología se incluyen las diversas pruebas y verificaciones que están especialmente diseñadas para la comprobación del nivel de seguridad de las comunicaciones inalámbricas y los dispositivos que utilizan este tipo de comunicaciones(802.11, Bluetooh, infrarrojos y similares). Estas verificaciones incluyen tanto la identificación de estas comunicaciones como la comprobación del nivel de seguridad de las redes ya identificadas.<br /><br />OSSTMM Wireless 2.9.1 - Wireless Security Testing Section Open-Source Security Testing Methodology Manual (English): <a href="http://www.isecom.info/mirror/osstmm.en.2.9.wireless.pdf">Descargar<br /></a>Braianhttp://www.blogger.com/profile/13742241213281007972noreply@blogger.com0tag:blogger.com,1999:blog-6301813106398565950.post-86724399754513434992008-08-12T16:23:00.000-07:002008-08-12T16:25:50.270-07:00Apagar monitor desde la consolaPara apagar el monitor desde la consola, ejecutamos el siguiente comando:<br /><pre>xset dpms force off</pre>Saludos!Braianhttp://www.blogger.com/profile/13742241213281007972noreply@blogger.com1tag:blogger.com,1999:blog-6301813106398565950.post-87531882726282921032008-08-03T08:25:00.000-07:002008-08-03T08:52:13.890-07:00Mark Shuttleworth, el padre de Ubuntu en Buenos Aires<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjM_4kaHE2qP948h25Y9RU6045tiJfol2kIH5R5HXnb9_vqIwNNS6l0cHKP6X7T-DQM0BFBZtlAU7Wb5tAp8sA0G20nmnNiCrZCS3RvFa_8VcSsm2gCHM576Ug9BjD0SdafYSKnw4G9dZo/s1600-h/splash-home-es.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjM_4kaHE2qP948h25Y9RU6045tiJfol2kIH5R5HXnb9_vqIwNNS6l0cHKP6X7T-DQM0BFBZtlAU7Wb5tAp8sA0G20nmnNiCrZCS3RvFa_8VcSsm2gCHM576Ug9BjD0SdafYSKnw4G9dZo/s320/splash-home-es.jpg" alt="" id="BLOGGER_PHOTO_ID_5230315129860453010" border="0" /></a>Noticia desde <a href="http://www.isos-linux.com.ar/content/view/3347/1/">isos-linux.com.ar</a>:<br /><br />El empresario sudafricano fundador de Canonical, la organización detrás de la distribución GNU/Linux Ubuntu, llega a Buenos Aires para ofrecer una charla pública y gratuita en el marco de las <a href="http://www.jornadasregionales.org/" target="_blank">8vas. Jornadas Regionales de Software Libre</a> que se realizarán del 20 al 22 de Agosto en la Universidad de Belgrano, Zabala 1837, Capital Federal. Las Jornadas Regionales de Software Libre, coordinadas este año por el Grupo de Usuarios de Software Libre de Capital Federal (CaFeLUG), son un evento internacional e itinerante de difusión y promoción del uso, desarrollo y actualización de Software Libre desde aspectos técnicos, filosóficos y políticos.<br /><br /><br />Con la presencia de Mark Shuttleworth, el mentor de una de las distribuciones de Software Libre más populares del planeta, las Jornadas Regionales prometen ser un evento de alto nivel tanto en lo técnico como en lo filosófico. Shuttleworth se suma a un número importante de panelistas internacionales, entre los que podemos citar a John 'Maddog' Hall (Presidente de Linux International), Chris Hoffman (Director de ingeniería y proyectos especiales de la Fundación Mozilla), Raymond Hettinger (Python Software Foundation), Rik van Riel (Ingeniero senior de Red Hat Linux), Dag Wieers, el kernel hacker Christoph Hellwig y Mario Bonilla (Ingeniero responsable<br />de clusters en Google Irlanda).<br />Las Jornadas son gratuitas pero la acreditación es imprescindible, ya que se espera un promedio de 2 mil asistentes para los tres días de evento. El programa previsto de conferencias incluye unas siete sesiones en paralelo, con segmentación según perfiles y temáticas. Habrá charlas eminentemente técnicas y muy avanzadas, así como también ponencias para principiantes, talleres introductorios, y charlas de alto contenido filosófico y político sobre temas relacionados a Software Libre, derechos de autor, libertad de acceso al conocimiento y privacidad en Internet.<br />Como cada año, estas jornadas contarán también con mesas para los sponsors y los diferentes grupos de las comunidades de software y cultura libre que, según se espera, llegarán a Buenos Aires procedentes de diferentes partes del país y la región.<br /><br /><span><span style="font-family:arial,helvetica,sans-serif;"><strong class="moz-txt-star">Sobre el software libre<span class="moz-txt-tag"><br /><br /></span></strong>Los programas de computadora libres son aquellos cuya licencia otorga a usuarios y desarrolladores cuatro libertades definidas a mediados de los años 80 por la Fundación del Software Libre, a saber:<br /><br />0. la libertad de usar el programa con cualquier propósito<br />1. la libertad de estudiar cómo funcionan y adaptarlo a las propias necesidades<br />2. la libertad de hacer y distribuir copias (aún cobrando por ellas)<br />3. la libertad de realizar mejoras y distribuir las versiones mejoradas.<br /><br />El movimiento de Software Libre se ha convertido en los últimos años en un movimiento que trasciende el campo técnico para ser un actor importante en la defensa de la libertad de expresión, del libre intercambio de cultura y de la defensa del derecho a la intimidad en internet. De su filosofía han surgido movimientos vinculados al campo de la cultura y el conocimiento libre. Los grupos sociales vinculados al Software Libre se articulan a través de grupos de usuarios, asociaciones, organizaciones, universidades, y empresas que tendrán, todas ellas, un espacio importante en las Jornadas Regionales de Software Libre.<br /><br /><strong class="moz-txt-star">Sobre las Jornadas Regionales de Software Libre<br /><br /></strong>Este evento itinerante se viene realizando en la región desde el año 2000 y ya ha pasado por las ciudades de Montevideo, Rosario, Córdoba y Mendoza. Este año, el Grupo de Usuarios de Software Libre de Capital Federal tiene como meta la organización de este evento que con el correr de los años se ha convertido en una de las citas imprescindibles de los usuarios y comunidades de Software Libre del Cono Sur.<br />Más información, inscripción y cronograma de charlas están disponibles en:<br /><a href="http://www.jornadasregionales.org/" class="moz-txt-link-freetext">http://www.jornadasregionales.org</a></span></span><br /><br /><span style="font-weight: bold;">Nota de braianet</span>: Problamente (yo) asista al evento =). Si a alguien le gustaria contactarse conmigo (aunque no creo XD) para charlas sobre software libre, musica, politica, moda ja o lo que venga puede hacerlo con gusto =) y arreglamos un punto de encuentro. Saludos!Braianhttp://www.blogger.com/profile/13742241213281007972noreply@blogger.com0tag:blogger.com,1999:blog-6301813106398565950.post-42485292279459644312008-07-31T15:24:00.000-07:002008-07-31T16:34:25.943-07:00Operadores de busqueda para Google<div class="documentacion"> <div><span title="Google"><b style="color: rgb(51, 102, 255);" class="azul">G</b><b style="color: rgb(255, 0, 0);" class="rojo">o</b><b style="color: rgb(255, 255, 0);" class="nara">o</b><b style="color: rgb(51, 102, 255);" class="azul">g</b><b style="color: rgb(0, 153, 0);" class="verd">l</b><b style="color: rgb(255, 0, 0);" class="rojo">e</b></span><span style="color: rgb(255, 0, 0);"> </span>tiene algunas formas de buscar páginas utilizando sus "palabras clave".<br /><br /><br /></div> <div><b><span style="color: rgb(255, 102, 0);">allinanchor</span>:</b> Seguido de varias palabras, te da resultados de páginas en la que están todas las palabras en el enlace.</div> <div><b><span style="color: rgb(255, 102, 0);">allintext</span>:</b> Seguido de varias palabras, te da resultados de páginas en la que están todas las palabras en la página.</div> <div><b><span style="color: rgb(255, 102, 0);">allintitle</span>:</b> Seguido de varias palabras, te da resultados de páginas en la que están todas las palabras en el título.</div> <div><b><span style="color: rgb(255, 102, 0);">allinurl</span>:</b> Seguido de varias palabras, te da resultados de la búsqueda de todas esas palabras en la URL.</div> <div><b><span style="color: rgb(255, 102, 0);">author</span>:</b> <i>(Sólo funciona en <span title="Google"><b class="azul">G</b><b class="rojo">o</b><b class="nara">o</b><b class="azul">g</b><b class="verd">l</b><b class="rojo">e</b></span> Groups)</i> Busca en los grupos artículos escritos por el nombre o la dirección de correo que le pasemos.</div> <div><b style="color: rgb(255, 102, 0);">bphonebook</b> Si le pasas un lugar o dirección, te da el número de teléfono.</div> <div><b><span style="color: rgb(255, 102, 0);">cache</span>:</b> Seguido de una URL, te mostrará la página en caché.</div> <div><b><span style="color: rgb(255, 102, 0);">datarange</span>:</b> </div> <div><b><span style="color: rgb(255, 102, 0);">define</span>:</b> Seguido de una palabra, te da la definición.</div> <div><b><span style="color: rgb(255, 102, 0);">ext</span>:</b> <i>ver</i> <b>filetype</b>.</div> <div><b><span style="color: rgb(255, 102, 0);">filetype</span>:</b> Seguido de una extenisó determinada, busca documentos en ese tipo de fichero.</div> <div><b><span style="color: rgb(255, 102, 0);">group</span>:</b> <i>(Sólo funciona en <span title="Google"><b class="azul">G</b><b class="rojo">o</b><b class="nara">o</b><b class="azul">g</b><b class="verd">l</b><b class="rojo">e</b></span> Groups)</i> Te restringe la búsqueda con el grupo que le pases.</div> <div><b><span style="color: rgb(255, 102, 0);">groups</span>:</b> <i>ver</i> <b>group</b>.</div> <div><b><span style="color: rgb(255, 102, 0);">id</span>:</b> <i>ver</i> <b>info</b>.</div> <div><b><span style="color: rgb(255, 102, 0);">inanchor</span>:</b> Sólo la primera palabra de las que le siguen, ha de estar en el enlace.</div> <div><b><span style="color: rgb(255, 102, 0);">info</span>:</b> Seguido de una URL, mostrará una página con enlaces relacionados, páginas que contiene esa URL...</div> <div><b><span style="color: rgb(255, 102, 0);">insubject</span>:</b> <i>(Sólo funciona en <span title="Google"><b class="azul">G</b><b class="rojo">o</b><b class="nara">o</b><b class="azul">g</b><b class="verd">l</b><b class="rojo">e</b></span> Groups)</i> Busca en el asunto del mensaje.</div> <div><b><span style="color: rgb(255, 102, 0);">intext</span>:</b> Sólo la primera palabra de las que le siguen, te da resultados de páginas en la que esté la palabra en la página.</div> <div><b><span style="color: rgb(255, 102, 0);">intitle</span>:</b> Sólo la primera palabra de las que le siguen, ha de estar en el título.</div> <div><b><span style="color: rgb(255, 102, 0);">inurl</span>:</b> Sólo la primera de las palabras que le siguen, ha de estar en la URL.</div> <div><b><span style="color: rgb(255, 102, 0);">link</span>:</b> Seguido de una URL, te encuentra todas aquellas páginas que enlazan con la URL dada.</div> <div><b><span style="color: rgb(255, 102, 0);">location</span>:</b> <i>(Sólo funciona en <span title="Google"><b class="azul">G</b><b class="rojo">o</b><b class="nara">o</b><b class="azul">g</b><b class="verd">l</b><b class="rojo">e</b></span> News)</i> Si le pasas un país a la búsqueda, te restringe los resultados a ese país.</div> <div><b><span style="color: rgb(255, 102, 0);">msgid</span>:</b> <i>(Sólo funciona en <span title="Google"><b class="azul">G</b><b class="rojo">o</b><b class="nara">o</b><b class="azul">g</b><b class="verd">l</b><b class="rojo">e</b></span> Groups)</i> Busca el mensaje con ese ID.</div> <div><b><span style="color: rgb(255, 102, 0);">phonebook</span>:</b> Te dará resultados de teléfonos con las palabras que le siguen.</div> <div><b><span style="color: rgb(255, 102, 0);">related</span>:</b> Seguido de una URL, tiene el mismo efecto qe cuando se pulsa sobre el enlace de "Enlaces Relacionados".</div> <div><b><span style="color: rgb(255, 102, 0);">rphonebook</span>:</b> Te dará resultados de teléfonos residenciales con las palabras que le siguen.</div> <div><b><span style="color: rgb(255, 102, 0);">site</span>:</b> Seguido de un dominio, te da los resultados de la búsqueda sólo en ese dominio. </div> <div><b><span style="color: rgb(255, 102, 0);">source</span>:</b> <i>(Sólo funciona en <span title="Google"><b class="azul">G</b><b class="rojo">o</b><b class="nara">o</b><b class="azul">g</b><b class="verd">l</b><b class="rojo">e</b></span> News)</i> Te limita las búsquedas al <i>medio de comunicación</i> que le indiques.</div> <div><b><span style="color: rgb(255, 102, 0);">spell</span>:</b> </div> <div><b><span style="color: rgb(255, 102, 0);">stocks</span>:</b> Seguido de un código de Bolsa, te dará los datos concretos.</div> <div><b><span style="color: rgb(255, 102, 0);">store</span>:</b> <i>(Sólo funciona en <span title="Froogle"><b class="azul">F</b><b class="verd">r</b><b class="rojo">o</b><b class="nara">o</b><b class="azul">g</b><b class="verd">l</b><b class="rojo">e</b></span>)</i> Te limita las búsquedas a un determinado comercio.<br /><br />Fuente: <a href="http://www.googlemania.com/palabras.php">http://www.googlemania.com/palabras.php</a><br /></div> </div>Braianhttp://www.blogger.com/profile/13742241213281007972noreply@blogger.com0tag:blogger.com,1999:blog-6301813106398565950.post-13195973058363930152008-07-31T15:15:00.000-07:002008-07-31T15:22:03.566-07:00Como funciona el DNS<p>El DNS se utiliza principalmente para la resolución de nombres, esto es, decidir qué dirección IP pertenece a determinado nombre completo de host.</p> <h2>Usos del DNS </h2> <p>El DNS se utiliza para distintos propósitos. Los más comunes son: </p> <ul><li> Resolución de nombres: Dado el nombre completo de un host (por ejemplo blog.smaldone.com.ar), obtener su dirección IP (en este caso, 208.97.175.41). </li><li> Resolución inversa de direcciones: Es el mecanismo inverso al anterior. Consiste en, dada una dirección IP, obtener el nombre asociado a la misma. </li><li> Resolución de servidores de correo: Dado un nombre de dominio (por ejemplo gmail.com) obtener el servidor a través del cual debe realizarse la entrega del correo electrónico (en este caso, gmail-smtp-in.l.google.com). </li></ul> <p>Por tratarse de un sistema muy flexible, es utilizado también para muchas otras funciones, tales como la obtención de claves públicas de cifrado asimétrico y la validación de envío de e-mails (a través de mecanismos como SPF). Terminología básica </p><p>Antes de proseguir, es necesario introducir algunos términos básicos para evitar confusiones y ambigüedades. Otros términos más complejos serán tratados más adelante. </p> <dl><dt>Host Name</dt><dd> El nombre de un host es una sola "palabra" (formada por letras, números y guiones). Ejemplos de nombres de host son "www", "blog" y "obelix". </dd><dt>Fully Qualified Host Name (FQHN)</dt><dd> Es el "nombre completo" de un host. Está formado por el hostname, seguido de un punto y su correspondiente nombre de dominio. Por ejemplo, "blog.smaldone.com.ar" </dd><dt>Domain Name</dt><dd> El nombre de dominio es una sucesión de nombres concatenados por puntos. Algunos ejemplos son "smaldone.com.ar", "com.ar" y "ar". </dd><dt>Top Level Domains (TLD)</dt><dd> Los dominios de nivel superior son aquellos que no pertenecen a otro dominio. Ejemplos de este tipo son "com", "org", "ar" y "es". </dd></dl><h2>Arquitectura del DNS </h2> <p>El sistema DNS funciona principalmente en base al protocolo UDP. Los requerimientos se realizan a través del puerto 53. </p><p>El sistema está estructurado en forma de "árbol". Cada nodo del árbol está compuesto por un grupo de servidores que se encargan de resolver un conjunto de dominios (zona de autoridad). Un servidor puede delegar en otro (u otros) la autoridad sobre alguna de sus sub-zonas (esto es, algún subdominio de la zona sobre la que él tiene autoridad). Un subdominio puede verse como una especialización de un dominio de nivel anterior. Por ejemplo, "smaldone.com.ar" es un subdominio de "com.ar", que a su vez lo es del TLD "ar". </p><p>El siguiente diagrama ilustra esto a través de un ejemplo: </p> <div class="center"><div class="thumb tnone"><div style="width: 402px;"><a href="http://wiki.xtech.com.ar/index.php/Imagen:ZonasDNS.png" class="internal" title="Zonas y delegación"><img src="http://wiki.xtech.com.ar/images/3/3f/ZonasDNS.png" alt="Zonas y delegación" longdesc="/index.php/Imagen:ZonasDNS.png" height="315" width="400" /></a> <div class="thumbcaption">Zonas y delegación</div></div></div></div> <p>Los servidores con autoridad sobre los TLD son los llamados "root servers" (o "servidores raíz") del sistema. Estos son fijos, ya que rara vez cambian, siendo actualmente 13. </p><p>Tomemos como ejemplo el dominio "com.ar". Este dominio pertenece al TLD "ar". </p><p>Los servidores con autoridad sobre el dominio "ar" son: </p> <pre>ns-ar.ripe.net<br />merapi.switch.ch<br />uucp-gw-1.pa.dec.com<br />uucp-gw-2.pa.dec.com<br />ns.uu.net<br />ns1.retina.ar<br />athea.ar<br />ctina.ar<br /></pre> <p>En tanto que los servidores con autoridad sobre "com.ar" son: </p> <pre>merapi.switch.ch<br />relay1.mecon.gov.ar<br />ns.uu.net<br />ns1.retina.ar<br />athea.ar<br />ctina.ar<br /></pre> <p>Podemos ver que ns.uu.net, ns1.retina.ar, athea.ar y ctina.ar tienen autoridad tanto sobre "com.ar" como sobre "ar". </p> <div class="editsection" style="float: right; margin-left: 5px;"><br /></div><a name="El_proceso_de_resoluci.C3.B3n_de_nombres"></a><h2> El proceso de resolución de nombres </h2> <p>Cuando una aplicación (cliente) necesita resolver un FQHN envía un requerimiento al servidor de nombres configurado en el sistema (normalmente, el provisto por el ISP). A partir de entonces se desencadena el proceso de resolución del nombre: </p> <ol><li> El servidor de nombres inicial consulta a uno de los servidores raíz (cuya dirección IP debe conocer previamente). </li><li> Este devuelve el nombre del servidor a quien se le ha delegado la sub-zona. </li><li> El servidor inicial interroga al nuevo servidor. </li><li> El proceso se repite nuevamente a partir del punto 2 si es que se trata de una sub-zona delegada. </li><li> Al obtener el nombre del servidor con autoridad sobre la zona en cuestión, el servidor inicial lo interroga. </li><li> El servidor resuelve el nombre correspondiente, si este existe. </li><li> El servidor inicial informa al cliente el nombre resuelto. </li></ol> <p>Ilustremos esto con un ejemplo concreto. Supongamos que el navegador necesita resolver el nombre "blog.smaldone.com.ar". </p> <ol><li> El sistema tiene configurado el servidor de nombres 200.49.156.3 (perteneciente al proveedor argentino Fibertel). Por lo tanto envía a éste el requerimiento de resolver "blog.smaldone.com.ar". </li><li> El servidor de 200.49.156.3 envía la consulta root server 198.41.0.4. </li><li> 198.41.0.4 le informa que el servidor con autoridad sobre "ar" es athea.ar, cuya dirección IP es 200.16.98.2. (En realidad, informa la lista de todos los servidores con tal autoridad, pero para simplificar el ejemplo tomaremos solamente uno.) </li><li> 200.49.156.3 envía nuevamente el requerimiento a athea.ar (el cual, recordemos, también tiene autoridad sobre "com.ar"). </li><li> athea.ar responde que la autoridad sobre smaldone.com.ar la tiene ns1.mydomain.com cuya dirección IP es 64.94.117.213. </li><li> 200.49.156.3 envía ahora la consulta a ns1.mydomain.com. </li><li> ns1.mydomain.com informa que la dirección IP de "blog.smaldone.com.ar" es 208.97.175.41. </li><li> Finalmente, 200.49.156.3 devuelve este resultado a la aplicación que originó la consulta. </li></ol> <div class="editsection" style="float: right; margin-left: 5px;"><br /></div><a name="Mecanismos_de_cach.C3.A9"></a><h2> Mecanismos de caché </h2> <p>Cada vez que un servidor de nombres envía una respuesta, lo hace adjuntando el tiempo de validez de la misma (TTL o "tiempo de vida"). Esto posibilita que el receptor, antes la necesidad de volver a resolver la misma consulta, pueda utilizar la información previamente obtenida en vez de realizar un nuevo requerimiento. </p><p>Esta es la razón por la cual los cambios realizados en el DNS no se propagan instantáneamente a través del sistema. Dependiendo de la naturaleza de los mismos (y de la configuración de cada servidor), la propagación puede tardar desde algunos minutos hasta varios días. Correo electrónico y resolución de nombres </p><p>Normalmente los usuarios de correo electrónico redactan su mensajes usando un cliente de correo y enviándolo a través de un servidor SMTP provisto por su ISP o a través de un sistema de correo vía web (webmail). En cualquier caso, una vez que el mensaje es recibido por el servidor, debe ser entregado al destinatario. Aquí interviene el sistema DNS: </p> <ol><li> El servidor del emisor solicita al DNS (de acuerdo al mecanismo analizado anteriormente), la entrada MX del dominio del receptor del mensaje. MX significa "mail exchanger", esto es, el nombre del servidor (o los servidores) encargado de recibir los mensajes destinados a determinado dominio. </li><li> El DNS devuelve el FQHN y la dirección IP del mail exchanger. </li><li> El servidor del emisor se conecta al puerto 25, mediante TCP, del servidor del destinatario y entrega el mensaje según el protocolo SMTP. </li><li> El proceso podrá continuar si el servidor receptor del mensaje no es el último de la cadena. Existen servidores que actúan como "puertas de enlace" o "gateways" de correo electrónico, y que se encargan de recibir los mensajes de determinados dominios para luego enviarlos a otros servidores. </li></ol> <div class="editsection" style="float: right; margin-left: 5px;"><br /></div><a name="Tipos_de_registro_en_un_servidor_de_nombres"></a><h2> Tipos de registro en un servidor de nombres </h2> <p>Un servidor de nombres puede almacenar distinta información. Para ello, en cada zona de autoridad dispondrá de entradas de distinto tipo. Entre los más importantes se encuentran: </p> <dl><dt>A (Address)</dt><dd> Este registro se utiliza para traducir nombres de hosts del dominio en cuestión a direcciones IP. </dd><dt>CNAME (Canonical Name)</dt><dd> El nombre canónico es un alias para un host determinado. (No define una dirección IP, sino un nuevo nombre.) </dd><dt>NS (Name Server)</dt><dd> Especifica el servidor (o servidores) de nombres para un dominio. </dd><dt>MX (Mail Exchange)</dt><dd> Define el servidor encargado de recibir el correo electrónico para el dominio. </dd><dt>PTR (Pointer)</dt><dd> Especifica un "registro inverso", a la inversa del registro A, permitiendo la traducción de direcciones IP a nombres. </dd><dt>TXT (Text)</dt><dd> Permite asociar información adicional a un dominio. Esto se utiliza para otros fines, como el almacenamiento de claves de cifrado, "DomainKeys" o "Sender Policy Framework". </dd></dl> <div class="editsection" style="float: right; margin-left: 5px;"><br /></div><a name="Bind.2C_.22el.22_servidor_de_nombres"></a><h2> Bind, "el" servidor de nombres </h2> <p>Prácticamente el único software utilizado en los servidores de nombres de Internet es bind ("Berkeley Internet Name Domain"), creado originalmente en la Universidad de California, y actualmente propiedad del Internet Systems Consortium. </p><p>Este programa, distribuido bajo una licencia libre, es utilizado en prácticamente todos los sistemas Unix del mundo. Esto ha sido considerado un problema de seguridad, al punto que se ha propuesto la migración de algunos root servers a otro sistema, ya que la aparición de algún problema de seguridad en bind podría implicar la caída de todo el DNS de Internet. Uso del DNS en una red local </p><p>Ya en redes de tamaño medio (quizás más de 5 equipos) es conveniente la utilización de DNS. Esto nada tiene que ver con el DNS de Internet (aunque el servidor local puede estar vinculado a este sistema). </p><p>Básicamente, es conveniente montar un servidor local de DNS por los siguientes motivos: </p> <dl><dt>Agilizar el acceso a Internet</dt><dd> Al tener un servidor de nombres en nuestra propia red local (que acceda al DNS de nuestro proveedor o directamente a los root servers) se agiliza el mecanismo de resolución de nombres, manteniendo en caché los nombres recientemente usados en la red y disminuyendo el tráfico hacia/desde Internet. </dd><dt>Simplificar la administración de la red local</dt><dd> Al contar con un DNS propio (ya sea uno o varios servidores de nombres) es posible definir zonas locales (no válidas ni accesibles desde Internet) para asignar nombres a cada uno de los hosts de la LAN. De esta forma es posible, por ejemplo, referirnos a la impresora de red como "hplaser.mired.local" en vez de "192.168.0.2" y a nuestro servidor de correo interno como "smtp.mired.local" en vez de "192.168.0.3". (Pensemos, por ejemplo, que ocurriría con las configuraciones de las aplicaciones si un día decidimos cambiar el esquema de direcciones IP de nuestra red.) </dd></dl> <div class="editsection" style="float: right; margin-left: 5px;"><br /></div><a name="Problemas_del_DNS"></a><h2> Problemas del DNS </h2> <p>El principal problema que presenta el DNS es que, al estar basado en UDP (protocolo de transporte que no garantiza la recepción de la información enviada), tanto las consultas como las respuestas pueden "perderse" (por ejemplo, a causa de congestionamiento en algún enlace de la red). Es común apreciar cómo, en el caso de servidores y redes no muy bien configuradas, la resolución de nombres se resiente sensiblemente ante cualquier anomalía (saturación de tráfico o del servidor de nombres local). </p><p>Otro inconveniente, que ya hemos hecho notar, es la lentitud de la propagación de las modificaciones en el sistema, producto de la propia arquitectura del mismo. </p><p>Pero quizás el mayor problema no sea inherente al sistema mismo, sino a la pésima configuración de los servidores de muchos ISP. Fibertel, el proveedor que utilizo, es un notable ejemplo de esta falencia. Una buena solución a esta situación es ejecutar un servidor de nombres en alguna PC de la red local, de forma tal que se comunique directamente con los root servers (evitando de esta forma pasar a través de los servidores de nombres de nuestro proveedor). Herramientas para aprender más </p><p>En sistemas Unix el comando dig (ver "man dig") permite realizar requerimientos "a mano" para poder investigar un poco más sobre el funcionamiento del DNS y, cómo no, también para detectar y solucionar problemas en la red. </p><p>Los usuarios de sistemas Windows disponen del comando nslookup (aunque no tan potente como dig), para el mismo propósito. Lectura adicional </p> <pre> * La página de Wikipedia sobre DNS contiene bastante información y buenos enlaces sobre este tema.<br />* El "DNS Cómo" explica la configuración de bind en GNU/Linux.<br />* El <a href="http://www.ietf.org/rfc/rfc1591.txt" class="external" title="http://www.ietf.org/rfc/rfc1591.txt">RFC 1591</a> explica detalladamente la estructura del DNS.<br />* Los <a href="http://www.ietf.org/rfc/rfc1034.txt" class="external" title="http://www.ietf.org/rfc/rfc1034.txt">RFC 1034</a> y 1035 (ambos en inglés), describen completamente el DNS.<br /></pre> <div class="editsection" style="float: right; margin-left: 5px;"><br /></div><a name="Fuente"></a><h2> Fuente </h2> <p>Este articulo ha sido tomado de la siguiente <a href="http://blog.smaldone.com.ar/2006/12/05/como-funciona-el-dns/" class="external text" title="http://blog.smaldone.com.ar/2006/12/05/como-funciona-el-dns/" rel="nofollow">fuente</a>. El mismo tiene la siguiente <a href="http://creativecommons.org/licenses/by-nc-sa/2.5/ar/deed.es_AR" class="external text" title="http://creativecommons.org/licenses/by-nc-sa/2.5/ar/deed.es_AR" rel="nofollow">licencia Creative Commons</a>. Algunas correcciones menores se han realizado para ajustarla a los fines de este sitio. </p><p>Muchas Gracias a Javier Smaldone por escribirlo de una manera tan simple y amena.<br /></p><p>Fuente: <a href="http://wiki.xtech.com.ar/index.php/Como_funciona_el_DNS">wiki.xtech.com.ar</a><br /></p>Braianhttp://www.blogger.com/profile/13742241213281007972noreply@blogger.com1tag:blogger.com,1999:blog-6301813106398565950.post-72762418181939851852008-07-20T06:12:00.000-07:002008-07-20T06:24:06.002-07:00GNU Mensajes - Envía SMS a todo el mundo!<span style="font-weight: bold;">GNU Mensajes</span> es un software de código libre, con el cual se pueden enviar mensajes de texto(SMS) a diferentes compañías telefónicas.<br />Funciona perfectamente en cualquier versión de Windows (98 / ME / NT / 2000 / XP / 2003 / Vista).<br />También <span style="font-weight: bold;">funciona en Linux y Solaris</span> mediante <span style="font-weight: bold;">WINE</span> (actualmente 90% funcional)<br />Existe una versión Portable para pendrive(Solo funcional en Windows).<br /><br /><b>Algunas de las funciones de GNU Mensajes:</b><br />- Envío de Mensajes de Texto.<br />- Detección de Proveedor Telefónico (solo para Argentina)<br />- Historial de Mensajes enviados.<br />- Agenda de Contactos.<br />- Importar/Exportar agenda de contactos.<br />- Lenguaje Mate.<br />- Abreviaturas pre-configuradas.<br />- Importar/Exportar abreviaturas pre-configuradas.<br />- Saludos pre-configurados.<br />- Firmas pre-configuradas.<br />- Caras, caritas, dibujos ASCII.<br /><br /><b>Compañías telefónicas soportadas:</b><br /><br />Argentina - Claro<br />Argentina - Conectel<br />Argentina - Movistar<br />Argentina - Nextel<br />Argentina - Personal<br />Argentina - Skytel<br />Canada - Fido<br />Canada - Rogers<br />Chile - Bellsouth<br />Chile - Entel PCs<br />Chile - Smartcom<br />Colombia - Bellsouth<br />Ecuador - Bellsouth<br />España - Vodafone<br />Estados Unidos - AT&T<br />Estados Unidos - Bellsouth<br />Estados Unidos - Cingular<br />Estados Unidos - Sprint<br />Estados Unidos - T-Mobile<br />Estados Unidos - U Text<br />Estados Unidos - Verizon Wireless<br />Honduras - Celtel<br />Italia - Vodafone<br />Inglaterra - Orange<br />Mexico - Iusacell<br />Mexico - Nextel<br />Paraguay - Tigo<br />Paraguay - Vox<br />Portugal - Telcel<br />Venezuela - Telcel Bellsouth<br />Venezuela - Movilnet<br />Venezuela – Movistar<br /><br /><span style=""><b><div style="text-align: center;">IMÁGENES</div></b></span><br /><br />GNU Mensajes en Windows XP<br /><br /><div style="text-align: center;"><img id="imagen" src="http://www.gnumensajes.org/images/gnu/WindowsXP.gif" width="500" border="0" /><br /></div><br />GNU Mensajes en Ubuntu 8.04 (utilizando Wine)<br /><br /><div style="text-align: center;"><img id="imagen" src="http://www.gnumensajes.org/images/gnu/Ubuntu.gif" width="500" border="0" /><br /></div><br /><br />GNU Geo integrado!!! (Detecta a que empresa corresponde un número telefónico)<br /><br /><div style="text-align: center;"><img id="imagen" src="http://www.gnumensajes.org/images/gnu/Geo.gif" border="0" /><br /></div><div style="text-align: left;"><br /></div><div style="text-align: left;"><b><div style="text-align: center;"><span style=""><br /></span></div></b></div><span style="font-weight: bold;"></span><br /><br /><div style="text-align: center;"><a href="http://downloads.sourceforge.net/gnumensajes/gnumensajes100.exe?use_mirror=osdn">Descargar GNU Mensajes 1.0.0</a><br /></div><br /><span style="font-weight: bold;">Links:</span><br /><a href="http://www.gnumensajes.org">Página Oficial de GNU Mensajes</a><br /><a href="http://www.gnumensajes.org/" target="_blank"></a><a href="http://www.gnumensajes.org/foro/">Foro Oficial del Proyecto GNU Mensaje</a><a href="http://www.gnumensajes.org/foro/">s<br /></a><a href="http://www.gnumensajes.org/foro/" target="_blank"></a><a href="http://www.gnumensajes.org/index.php?view=article&catid=36%3Ainstalacion&id=48%3Ainstalacion-en-linux-wine&option=com_content&Itemid=58">Tutorial para Instalar GNU Mensajes en Linux (mediante Wine)</a><br /><a href="http://www.gnumensajes.org/index.php?view=article&catid=36%3Ainstalacion&id=48%3Ainstalacion-en-linux-wine&option=com_content&Itemid=58" target="_blank"></a><br />Fuente: <a href="http://linuxzarpele.blogspot.com/2008/07/gnu-mensajes-software-para-enviar-sms.html">Linuxzarpele</a>Braianhttp://www.blogger.com/profile/13742241213281007972noreply@blogger.com1tag:blogger.com,1999:blog-6301813106398565950.post-78677721131347626702008-07-17T15:56:00.000-07:002008-07-17T15:58:31.226-07:00Uso de Gawk o awk<h4>Copyright 2005-2008 Sergio González Durán<br />Se concede permiso para copiar, distribuir y/o modificar este documento siempre y cuando se cite al autor y la fuente de linuxtotal.com.mx y según los términos de la <a href="http://www.gnu.org/licenses/translations.html">GNU Free Documentation License</a>, Versión 1.2 o cualquiera posterior publicada por la Free Software Foundation.</h4> <h3>autor: sergio.gonzalez.duran@gmail.com</h3><br /><hr /> <!-- INICIO DEL ARTICULO --> <p><code>awk</code> o la versión GNU <code>gawk</code> es más que un simple comando de procesamiento de patrones, es todo un lenguaje de análisis semántico. Su dominio es como aprender todo un lenguaje de programación, pero en esta ocasión veremos unos ejemplos de su potencia en unos casos sencillos de análisis de patrones de cadenas, espero te sirvan de base para que puedas aprender aun más sobre esta interesante herramienta.</p><br /><h2>Ejemplo 1: Una lista personalizada de usuarios para HTML</h2> <p>Una línea típica de <em>/etc/passwd</em> es como la siguiente:</p> <div id="e"><pre>luis:x:504:504:Luis Hernandez:/home/luis:/bin/bash<br /></pre></div> <p>Bien, supongamos que deseamos un listado de todos los usuarios normales (personas) del sistema, pero solo necesitamos su nombre de usuario, su nombre o real y su shell por defecto, es decir, si vemos la línea anterior, la separación entre campos es ":" asi que para nuestro reporte queremos el campo 1,5 y 7. Pero además, este reporte será parte de una tabla HTML, asi que sería bueno si puderian incluirse de una vez las etquietas " y " necesarias de una vez. Es decir, el resultado deseado es el siguiente:</p> <div id="e"><pre>luisLuis Hernandez/bin/bash<br /></pre></div> <p>El primer paso es determinar los usuarios normales del sistema, podríamos usar un <code>grep "home" /etc/passw | gawk ...</code>, pero podría haber usuarios que tengan su HOME en otra ubicación, además se trata de usar solo <code>awk</code>, asi que lo primero que entenderemos es que los campos obtenidos del resultado de un comando awk, se numeran por $1, $2, etc. y el delimitador de campos se indica mediante la variable "FS".</p> <div id="e"><pre>#> gawk '{print $3}' FS=":" /etc/passwd<br />0<br />1<br />2<br />...<br />81<br />86<br />500<br />501<br />502<br />503<br />504<br /></pre></div> <p>Aunque no muy útil todavía, podemos ver como seleccionamos el caracter separador <em>FS=":"</em>, que viene de 'Field Separator', y tenemos indicada una acción '{print $3}', que significa imprime el campo 3. Aunque realmente no lo queremos imprimir, lo queremos evaluar, y si deseamos imprimir el $1, $5 y $7 que se mencionarion previamente, asi que agregamos una expresión de evaluación antes de la acción:</p> <div id="e"><pre>#> awk '$3 >= 500 {print $1 $5 $7 }' FS=":" /etc/passwd<br />sergonSergio Gonzalez/bin/bash<br />valeriaValeria Perez/bin/bash<br />fernandaFernanda Lozano/bin/sh<br />alejandraAlejandra Lopez/bin/nologin<br />luisLuis Hernandez/bin/bash<br /></pre></div> <p>Mucho mejor, agregamos '$3 >= 500' previo a la acción (que es imprimir lo que deseamos), ya que como se sabe en la mayoría de distros modernas, los usuarios normales del sistema se numeran del 500 en adelante (<a href="http://www.linuxtotal.com.mx/index.php?cont=info_admon_008">más</a> sobre administración de usuarios). Nótese que los campos en el resultado salen pegados, es necesario agregar entre comillas " ", ya sea un espacio o lo que se desee, en este caso etiquetas de tablas de HTML y además ordenaremos "sort" los registros obtenidos:</p> <div id="e"><pre>#> awk '$3 >= 500 {print ""$1""$5""$7"" | "sort" }' FS=":" /etc/passwd<br />alejandraAlejandra Lopez/bin/nologin<br />fernandaFernanda Lozano/bin/sh<br />luisLuis Hernandez/bin/bash<br />sergonSergio Gonzalez/bin/bash<br />valeriaValeria Perez/bin/bash<br /></pre></div><br /><h2>Ejemplo 2: Una lista personalizado de usuarios para reporte</h2> <p>Ahora veamos como crear una lista similar a la anterior pero especificando un par de líneas de títulos al inicio:</p> <div id="e"><pre>#> awk 'BEGIN { print "Usuario UID Shell\n------- --- -----" } $3 >= 500 { print $1, $3, $7 | "sort -r"}' FS=":" /etc/passwd<br />Usuario UID Shell<br />------- --- -----<br />valeria 501 /bin/bash<br />sergon 500 /bin/bash<br />luis 504 /bin/bash<br />fernanda 502 /bin/sh<br />alejandra 503 /bin/nologin<br /></pre></div> <p>Iniciamos con la sentencia BEGIN (que tiene varios usos, checa el manual) que en este caso nos permite indicar lo que se imprimirá una sola vez, en este caso los títulos, un retorno '\n' y guiones para separar los títulos, después viene de nuevo la evaluación ya conocida y ahora al indicar la impresión de los campos 'print $1, $3, $7', los separé por comas, que automáticamente añade un espacio, y solo para aumentar el ejemplo, el ordenamiento es ahora al revés 'sort -r'.</p> <p>Pero podemos ver en la salida, que los registros no se acomodan bien con respecto a los títulos, con dos o tres campos tal vez resulte fácil añadir espacios o tabuladores '\t' para hacer el acomodo, pero en varios campos será realmente frustrante lograrlo. Mejor usamos 'printf':</p> <div id="e"><pre>#> awk 'BEGIN { print "Usuario UID Shell\n------------ ---- ----------" } $3 >= 500 \<br />{ printf "%12s %4d %10s\n", $1, $3, $7 | "sort -r"}' FS=":" /etc/passwd<br />Usuario UID Shell<br />------------ ---- ----------<br /> valeria 501 /bin/bash<br /> sergon 500 /bin/bash<br /> luis 504 /bin/bash<br /> fernanda 502 /bin/sh<br /> alejandra 503 /bin/nologin<br /></pre></div> <p>Sigo usando 'print' para los títulos, pero ahora uso 'printf' que me permite formatear la salida, la sintaxis es 'printf "formato", $1, $2'. Cada formato comienza con '%' después el número de posiciones seguido del tipo de campo 's' para string, 'd' para enteros, etc. '%12s' 12 posiciones de tipo cadena. (checar el manual para el resto de formatos de printf), termino el formato con un salto de línea '\n'. Pero como se puede apreciar por defecto las cadenas se justifican a la derecha y en este caso las deseamos a la izquierda, esto se arregla agregando un '-' guión en el indicador de formato de la siguiente manera '%-12s', el resultado correcto sería el siguiente:</p> <div id="e"><pre># awk 'BEGIN { print "Usuario UID Shell\n------------ ---- ----------" } $3 >= 500 \<br />{ printf "%-12s %4d %-10s\n", $1, $3, $7 | "sort -r"}' FS=":" /etc/passwd<br />Usuario UID Shell<br />------------ ---- ----------<br />valeria 501 /bin/bash<br />sergon 500 /bin/bash<br />luis 504 /bin/bash<br />fernanda 502 /bin/sh <br />alejandra 503 /bin/nologin<br /></pre></div><br /><h2>Ejemplo 3: Extrayendo campos sin posición fija</h2> <p>Hay ocasiones en que no se tiene exactamente la posición de los campos a extraer, asi que usaremos otra técnica basada en el número total de campos encontrados. En este caso, necesitamos la variable "NF" (Number of Fields) que representa el total de campos encontrados. Y usaremos como caracter separador FS el espacio, es decir <em>FS=" "</em>, pero dado que el espacio es el separador por defecto no es necesario indicarlo.</p> <p>Como ejemplo, veamos la salida del comando <code>uptime</code>:</p> <div id="e"><pre>$> uptime<br />19:32:15 up 2:28, 1 user, load average: 1.75, 1.54, 1.54<br /></pre></div> <p>Y deseamos crear un pequeño script que de como resultado el siguiente:</p> <div id="e"><pre>$> ./carga<br />carga actual del sistema: 1min=1.75, 5min=1.54, 15min=1.54<br /></pre></div> <p>Como se puede observar, se necesitan los tres últimos campos, aparentemente los campos $8, $9 y $10. Pero el problema esta en que conforme pasa el tiempo, el comando <code>uptime</code> mostrará de hecho más campos, ya que el que en este momento es el $3 '2:28' después de unos días puede quedar asi '3 days 3:50', asi que al usar NF nos dará el total de campos, veamos:</p> <div id="e"><pre>$> uptime | gawk '{print NF}'<br />gt; uptime | gawk '{print NF}'<br />10<br /><br /><span class="t2">(Podemos usar NF no como varibale del total de campos sino como variable de contenido con $NF)</span><br /><br />$> uptime | gawk '{print $NF}'<br />1.33<br /></pre></div> <p>Entendiendo lo anterior, es fácil de deducir entonces que los campos requeridos son entonces NF-2, NF-1, NF es decir, los tres últimos, y no importará cuantos campos haya en el resultado.</p> <div id="e"><pre>$> uptime | gawk '{print $(NF - 2), $(NF - 1), $NF}'<br />0.72, 0.54, 0.47<br /></pre></div> <p>El script quedaría entonces así:</p> <div id="e"><pre>#!/bin/bash<br />echo "Carga actual del sistema: "<br />uptime | gawk '{print "1min:"$(NF - 2), "5min:"$(NF - 1), "15min:"$NF}'<br /></pre></div><br /><br />Fuente: <a href="http://www.linuxtotal.com.mx/index.php?cont=info__tips_021">Linuxtotal.com.mx</a>Braianhttp://www.blogger.com/profile/13742241213281007972noreply@blogger.com1tag:blogger.com,1999:blog-6301813106398565950.post-79048346037057191452008-07-17T07:14:00.000-07:002008-07-17T07:51:02.868-07:00Un pirulo más…<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNoL75btVbkDQ6SybnJor6es-hG1ACozckQ_xaxNJWf8xa5B0JGo8YTNrDPr3ZTjjZUUSC5jq_XV1Qb29q4Gg-qre72oZmDVIpATjDGPYmApYx8_fb9uHrZ13sCYqVZ7yK-YUNgeYm4cM/s1600-h/feliz_cumple_gx.png"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNoL75btVbkDQ6SybnJor6es-hG1ACozckQ_xaxNJWf8xa5B0JGo8YTNrDPr3ZTjjZUUSC5jq_XV1Qb29q4Gg-qre72oZmDVIpATjDGPYmApYx8_fb9uHrZ13sCYqVZ7yK-YUNgeYm4cM/s320/feliz_cumple_gx.png" alt="" id="BLOGGER_PHOTO_ID_5223994745713666754" border="0" /></a><br />Hoy es mi cumpleaños, cumplo 18...huy ahora puedo tener problemas legales jaja XD. Mmm que dificil es esta edad, en realidad nose si será de esta manera la vida siempre, pero pienso que es el momento que uno decide que va a ser con la misma y la verdad tengo mas dudas que certezas...es decir nose si el resto de mi vida seguiré con esto, que se yo. Solo sé que no va con mis valores seguir enfrente de una pc mientras el mundo sigue así...<br />Desde los 11 tengo una pc en casa, y desde ese momento empecé a aprender todo lo que podía sobre informática, primero con windows 98, Xp, reparación de pcs,redes y luego con lo que me cambió la manera de observar todo: Gnu/Linux. La filosofía de libertad y compartir información me llenó profundamente...<br />Pero me siento vacío, como decir: "Haaa esto era el mundo de las redes, esto era el hacking??, va al final la culpa el 90% es del usuario, y mediante ingeniería social se obtiene todo, es decir, nisiquiera es necesario una computadora para hacerse rico, todo esta en torno a la mentira, si uno desea ser rico sin importarle los demás, con Ing. Social puede hacerlo en un par de días..."<br />Y eso me dió asco, si una persona se propone puede verderle un animal a otra persona diciendole que es un gato y en realidad es un perro, solo es necesario inundarlo de imagenes televisivas, recargarlo de llamadas y llenarlo de volantes, inundar su casilla de mail, darle un perfume de regalo, etc...<br />Pufff así es el mundo...<br />Todo tiene un valor, la voluntad de las personas, el pensamiento, todo se compra y encima es muy común, tanto que ya nos parece normal.<br /><br />Por eso, les dejo mis humildes consejos: conserven su valor, su voluntad, su pensamientos, que nadie les robe nada, escuchen y sepan escuchar, sean felices y dejen ser feliz a los demás y principalmente traten de devolver una sonrisa y hacer sonreir. Jueguense por lo que buscan, arriesguense y no se queden atrás. Pidan disculpas cuando lástiman a alguien, se sentirán mejor y harán sentir mejor.<br />El camino de la felicidad está en cada uno de nosotros...<br />Bueno espero que cada uno encuentre su camino y llegue a ser lo que deseó sin destruir el entorno en el que vivimos.<br /><br />Sean felices. Saludos!Braianhttp://www.blogger.com/profile/13742241213281007972noreply@blogger.com0tag:blogger.com,1999:blog-6301813106398565950.post-8153207574251376772008-07-13T13:30:00.000-07:002008-07-13T14:43:30.512-07:00Montar pendrive o disco extraible manualmente en Gnu/LinuxBueno seguimos con el montado de discos, recomiendo que lean el anterior <a href="http://braianet.blogspot.com/2008/07/uuid-labels-particiones-y-fstab.html">articulo sobre UUID</a> entre otras cosas y claro para comprender que estamos haciendo tener conocimientos sobre el <a href="http://braianet.blogspot.com/2008/06/sobre-el-fstab.html">fstab</a>.<br /><br />Muchas veces tenemos la necesidad de montar un disco extraible o un pendrive, en mi caso tengo un reproductor de MP3 y prácticamente es lo mismo en el funcionamiento de almacenamiento.<br />Prosigamos...<br /><br />Se acuerdan que no tengo instalado <a href="http://braianet.blogspot.com/2008/01/configurando-grabadora-de-cdsdvds-yo.html">HAL</a>, por lo tanto, cuando yo conecte un disco extraible voy a tener que montarlo manualmente, o en el mejor de los casos, agregarlo al fichero /etc/fstab para que al iniciar el equipo lo monte automáticamente o que se mantenga en estado de espera, es decir esperando ser montado al ser detectado.<br /><br />Primero conectemos el dispositivo y luego verificamos(como root) que aparezca en el listado de discos del comando <span style="font-weight: bold;">fdisk</span>.<br /><pre><br />[root@ArchLinux braianet]# fdisk -l<br /><br /><span style="color: rgb(51, 51, 255);">Disco /dev/sda: 40.0 GB, 40020664320 bytes</span><br />255 heads, 63 sectors/track, 4865 cylinders<br />Units = cilindros of 16065 * 512 = 8225280 bytes<br />Disk identifier: 0x4c2ba12c<br /><br />Disposit. Inicio Comienzo Fin Bloques Id Sistema<br />/dev/sda1 * 2 2365 18988830 7 HPFS/NTFS<br />/dev/sda2 2366 4675 18555075 83 Linux<br />/dev/sda3 4761 4865 843412+ 82 Linux swap / Solaris<br />/dev/sda4 4676 4760 682762+ 83 Linux<br /><br />Las entradas de la tabla de particiones no están en el orden del disco<br /><br /><span style="color: rgb(51, 51, 255);">Disco /dev/sdb: 15.0 GB, 15020457984 bytes</span><br />16 heads, 63 sectors/track, 29104 cylinders<br />Units = cilindros of 1008 * 512 = 516096 bytes<br />Disk identifier: 0x90909090<br /><br />Disposit. Inicio Comienzo Fin Bloques Id Sistema<br />/dev/sdb1 1 1008 508000+ 82 Linux swap / Solaris<br />/dev/sdb2 * 1009 15540 7324128 83 Linux<br />/dev/sdb3 15541 29104 6836256 83 Linux<br /><br /><span style="color: rgb(51, 51, 255);">Disco /dev/sdc: 522 MB, 522043904 bytes</span><br />17 heads, 59 sectors/track, 1016 cylinders<br />Units = cilindros of 1003 * 512 = 513536 bytes<br />Disk identifier: 0x20736f63<br /><br /><span style="color: rgb(255, 0, 0);">Esto no parece una tabla de particiones</span><br /><span style="color: rgb(255, 0, 0);">Probablemente ha seleccionado el dispositivo que no era.</span><br /><span style="color: rgb(255, 0, 0);">Disposit. Inicio Comienzo Fin Bloques Id Sistema</span><br /><span style="color: rgb(255, 0, 0);">/dev/sdc1 ? 1911394 2454136 272185273 6f Desconocido</span><br /><span style="color: rgb(255, 0, 0);">La partición 1 tiene distintos principios físicos/lógicos (¿no Linux?):</span><br /><span style="color: rgb(255, 0, 0);"> físicos=(361, 101, 36) lógicos=(1911393, 0, 3)</span><br /><span style="color: rgb(255, 0, 0);">La partición 1 tiene distintos finales físicos/lógicos:</span><br /><span style="color: rgb(255, 0, 0);"> físicos=(255, 115, 46) lógicos=(2454135, 5, 27)</span><br /><span style="color: rgb(255, 0, 0);">La partición 1 no termina en un límite de cilindro.</span><br /><span style="color: rgb(255, 0, 0);">/dev/sdc2 ? 1338820 2115804 389657273 69 Desconocido</span><br /><span style="color: rgb(255, 0, 0);">La partición 2 tiene distintos principios físicos/lógicos (¿no Linux?):</span><br /><span style="color: rgb(255, 0, 0);"> físicos=(100, 101, 32) lógicos=(1338819, 12, 59)</span><br /><span style="color: rgb(255, 0, 0);">La partición 2 tiene distintos finales físicos/lógicos:</span><br /><span style="color: rgb(255, 0, 0);"> físicos=(367, 115, 35) lógicos=(2115803, 6, 6)</span><br /><span style="color: rgb(255, 0, 0);">La partición 2 no termina en un límite de cilindro.</span><br /><span style="color: rgb(255, 0, 0);">/dev/sdc3 ? 168145 168145 0 20 Desconocido</span><br /><span style="color: rgb(255, 0, 0);">La partición 3 tiene distintos principios físicos/lógicos (¿no Linux?):</span><br /><span style="color: rgb(255, 0, 0);"> físicos=(353, 117, 46) lógicos=(168144, 10, 47)</span><br /><span style="color: rgb(255, 0, 0);">La partición 3 tiene distintos finales físicos/lógicos:</span><br /><span style="color: rgb(255, 0, 0);"> físicos=(355, 116, 37) lógicos=(168144, 10, 46)</span><br /><span style="color: rgb(255, 0, 0);">La partición 3 no termina en un límite de cilindro.</span><br /><span style="color: rgb(255, 0, 0);">/dev/sdc4 2877051 2877106 27619 0 Vacía</span><br /><span style="color: rgb(255, 0, 0);">La partición 4 tiene distintos principios físicos/lógicos (¿no Linux?):</span><br /><span style="color: rgb(255, 0, 0);"> físicos=(0, 0, 0) lógicos=(2877050, 0, 3)</span><br /><span style="color: rgb(255, 0, 0);">La partición 4 tiene distintos finales físicos/lógicos:</span><br /><span style="color: rgb(255, 0, 0);"> físicos=(0, 0, 0) lógicos=(2877105, 1, 16)</span><br /><span style="color: rgb(255, 0, 0);">La partición 4 no termina en un límite de cilindro.</span><br /><br /><span style="color: rgb(255, 0, 0);">Las entradas de la tabla de particiones no están en el orden del disco</span><br />[root@ArchLinux braianet]#<br /></pre>Las líneas azules, nos indican los diferentes discos y lo que marque de rojo es una falencia en el sistema de archivos del reproductor de mp3, porque como sabrán, tiene una partición para su propio sistema(fabricante, firmware, etc), no se preocupen por esto.<br /><br />Bueno el disco extraible se encuentra en:<br /><span style="color: rgb(51, 51, 255);">Disco /dev/sdc: 522 MB, 522043904 bytes<br /></span><br />Ahora lo <span style="font-weight: bold;">montaremos manualmente</span> si necesitan utilizarlo solo una vez, al ser montado como root, solo él puede modificar su contenido:<br /><br /><span style="font-weight: bold;">Método común</span><br /><br /># mkdir /media/MP3<br /># mount -t vfat /dev/sdc /media/MP3<br /><br />Lo que hicimos fué crear un directorio en /media llamado MP3 y luego montarlo. El parámetro<span style="font-weight: bold;"> -t</span> es para el <span style="font-weight: bold;">tipo</span>, en este caso es un<span style="font-weight: bold;"> sistema fat32</span>(vfat lo llama linux).<br />/dev/sdc es la ruta para el dispositivo, y /media/MP3 el directorio donde se montará.<br /><br />Esta opcion nos quitará mas de un apuro pero no lo recomiendo si van a utilizar el disco extraíble continuamente.<br /><br /><span style="font-weight: bold;">Método modificando el Fstab</span><br /><br />Llegamos a lo que necesitaba, este artículo en sí, lo hice para explicar esto, pero no podía empezar asi de la nada. Es la mejor opción si no cuenta con hal.<br /><br />Obtenemos el UUID del disco extraíble:<br /><pre>[root@ArchLinux braianet]# blkid<br />/dev/sda1: UUID="100CA78D0CA76D02" TYPE="ntfs"<br />/dev/sda2: UUID="5e716466-9f33-44c3-8455-383c8d1e9a10" SEC_TYPE="ext2" TYPE="ext3"<br />/dev/sda3: TYPE="swap" UUID="fe97b59c-3776-452c-9232-65966a5cc230"<br />/dev/sda4: UUID="11f5a43a-5904-47bf-845d-8d95ac8730d4" SEC_TYPE="ext2" TYPE="ext3"<br />/dev/sdb1: TYPE="swap" UUID="70c4f0be-c6a0-449e-b2f2-b9689d1f93b6"<br />/dev/sdb2: UUID="dfa49bd0-dd2c-4c76-a318-a044fc691a6a" SEC_TYPE="ext2" TYPE="ext3"<br />/dev/sdb3: UUID="7824e60c-2dfd-4919-88df-b672eea43400" SEC_TYPE="ext2" TYPE="ext3"<br />/dev/sdc: LABEL="BR414N" <span style="color: rgb(51, 51, 255);">UUID="7453-103F"</span> TYPE="vfat"<br />[root@ArchLinux braianet]#<br /></pre>Modificamos el fstab y agregamos:<br /><br /><span style="color: rgb(51, 204, 255);">UUID</span>=<span style="color: rgb(255, 0, 0);">7453-103F </span>/media/MP3 <span style="color: rgb(51, 51, 255);">vfat</span> <span style="color: rgb(51, 204, 0);">rw,noauto,user,async,gid=100</span> <span style="color: rgb(255, 0, 0);">0 0 </span><br /><br />Explicación:<span style="color: rgb(51, 204, 0);"><br /></span><span style="color: rgb(51, 204, 0);">rw</span>: significa lectura y escritura.<br /><span style="color: rgb(51, 204, 0);">noauto</span>: significa que no se monte cuando inicie el sistema, ya que puede no estar conectado.<br /><span style="color: rgb(51, 204, 0);">user</span>:Permite a cualquier usuario del sistema montar o desmontar un dispositivo físico sin necesidad de ser root.<br /><span style="color: rgb(51, 204, 0);">async: </span>Con esto hacemos que las operaciones que realicemos no se hagan de forma asíncrona. Elegi esta opcion porque me funcionó mas rápido,aunque sync es mejor para no tener un solo error.<br /><span style="color: rgb(51, 204, 0);">gid</span>: el grupo especificado tiene el control sobre los archivos del dispositivo. En mi caso el el numero 100 que es el grupo <span style="font-weight: bold;">users</span>, ustedes pueden tener otro número, consulten con el comando <span style="font-weight: bold;">id</span>.<br /><br />Ahora solo nos queda teclear <span style="font-weight: bold;">mount /dev/sdc</span> como usuario normal y listo o si tienen <span style="font-weight: bold;">Gnome</span> cuando lo conecten ya les mostrá el ícono, solo será necesario hacer click<br />Si quieren demontarlo y no saben porque le tira el error:<br /><pre><br />[root@ArchLinux Pascal]# umount /dev/sdc<br />umount: /media/MP3: dispositivo ocupado<br />umount: /media/MP3: dispositivo ocupado<br /></pre>Utilicen el comando <a href="http://braianet.blogspot.com/2008/02/usos-de-lsof.html">lsof</a> para saber que es lo que esta impidiendo al mismo, ahí nos muestra el PID y si desean matar el proceso utilicen el comando <span style="font-weight: bold;">kill</span>.<br /><pre>[root@ArchLinux Pascal]# lsof /dev/sdc<br />COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME<br />bash 3042 root cwd DIR 8,32 4096 3884 /media/MP3/Pascal<br />lsof 3312 root cwd DIR 8,32 4096 3884 /media/MP3/Pascal<br />lsof 3313 root cwd DIR 8,32 4096 3884 /media/MP3/Pascal<br />[root@ArchLinux Pascal]#<br /></pre>Espero que le haya servido. Saludos!Braianhttp://www.blogger.com/profile/13742241213281007972noreply@blogger.com2