Temas relacionados con GNU/Linux y en especial con Ubuntu Hablemos de Apple, Hablemos de Mac y su sistemas MacOS y iOS Hablemos de Gadgets. todo es mundo de nuevas tecnologías que alguna vez soñamos... Busca en Google V E N E Z U E L A

ES

Ubuntu, Canaima y Yo!

Ayer tuve la oportunidad de participar en un evento al cual fui invitado cordialmente, luego al culminar el mismo, a mi esposa gentilmente le regalaron un CD de GNU/Linux CANAIMA 3.0. Para todos es bien sabido mi desinterés por dicha distribución de Linux, especialmente porque en los intentos de conocerla, siempre saltó por allí algún personaje “Sobrado” menospreciando a Ubuntu, que a fin de cuentas es lo que considero mi Distro por excelencia, pues lo he usado desde su primera versión hasta la fecha.

Sin embargo, en la noche de hoy, revisando el Planeta Ubuntu-ve, me he topado con un Post de Efrain Valles, el cual me hizo pensar, reflexionar y hasta emocionarme, pues definitivamente concuerdo con muchas de sus opiniones (por no decir que con todas), motivo por el cual recordé cuando alguna vez en la vida, ese Maracucho vino a Caracas a conocer a este su servidor, un simple ciudadano que usaba y hacia Advocacy sin interés  de ser una estrella ni nada por el estilo, simplemente invitaba a todos a participar en Ubuntu como una alternativa viable para todos. Entendí, a sabiendas de que luego el perdiera ese  ”Respeto” que podía sentir por mi labor, y que en su momento fui de alguna forma, inspiración para su participación. Pues hoy siento que es él quien me sirve de inspiración para participar en el proyecto Canaima, debo confesar que no pretendo hacer aportes en desarrollo, pues eso ya lo he dejado y no pretendo tomarlo nuevamente (mi salud ya no lo permite) pero si pretendo hacer mi mayor esfuerzo en pro de ayudar con CANAIMA en las áreas que pueda.

Es así como no puedo dejar pasar esta ocasión para en primer lugar agradecer a Efrain por ese ejemplo que nos da a todos y en segundo lugar para hacer publica mi intensión de buscar como puedo ayudar con CANAIMA y en consecuencia con VENEZUELA.

Saludos Fraternos Ubunteros!

Ubuntu 12.04 LTS

Ubuntu 12.04

Ubuntu 12.04

Saludos, como de costumbre, he tenido el gusto de seguir todo el proceso de desarrollo y pruebas de Ubuntu 12.04 LTS. el cual sin lugar a dudas, demuestra ser nuevamente todo un éxito de la comunidad UBUNTU. Un sistema operativo muy estable, que se ha instalado en mis equipos sin  mayor inconveniente, encontrando y activando desde su instalación todo el hardware, inclusive activando los módulos de mis tarjetas de video y  wireless de forma que todo funcione a cabalidad.

Paticularmete, lo he instalado en mi MacBook y debo confesar que funciona mucho mejor que con MacOS X (Lion), y aunque aun hay detalles mínimos en Ubuntu, se siente la diferencia en el funcionamiento del equipo. navegando, descargando archivos y copiando datos de un disco a otro, Ubuntu ha demostrado su supremacía en velocidad y estabilidad.

Como muchos saben, soy usuario Mac y Ubuntu. por ello tengo un equipo con cada sistema, y verdaderamente que la experiencia para los usuarios finales, que escapan de Windows, en Ubuntu, está muy cerca de superar al MacOS X. Pues la facilidad e interacción con el usuario NO EXPERTO DE LAS TECNOLOGIAS, cada vez es mejor.

Espero que pronto el proyecto UNITY siga avanzando y mejorando, porque de ser así. Ubuntu será el lider por al menos unos 10 años más, ya con el

HUD (Head-Up Display), que anunciase  través de su blog, Mark Shuttleworth proyecto que intenta reemplazar los menús clásicos en las aplicaciones de Ubuntu por una interfaz estilo cuadro de búsqueda inteligente, que nos permitirá ejecutar todas las acciones disponibles en el menú de la aplicación que estemos usando en ese momento e invocar diferentes acciones de diferentes aplicaciones y del mismo sistema.

He aquí algunas de las características mas importantes que encontraremos en Ubuntu 12.04 LTS Precise Pangolin:

  • Inclusión de HUD de forma predeterminada
  • Soporte Multimonitores para Unity y LightDM
  • Un nuevo lente de Inicio para Unity
  • Un nuevo lente de Unity para videos tanto locales como en linea
  • Un nuevo modo ‘Presionar para mostrar’ el lanzador de Unity
  • NotifyOSD ahora utiliza los mismo colores y transparencias que el Dash de Unity
  • Y muchos cambios más.

Referencias desde:http://www.ubuntu.comhttp://emslinux.com y http://omgubuntu.co.uk

TIPS de Seguridad: Complejidad de las Claves o Contraseñas

TIPS de Seguridad para mitigar el riesgo de ser víctima de un Hacking a tus cuentas de correo y redes sociales:

Hoy día, los algoritmos para descifrar contraseñas son cada vez más efectivos y rápidos, aún más al considerar la potencia de los computadores y su incremento exponencial determinado por la Ley de Moore hacen que cada vez la seguridad sea mas insegura.

Para solventar esto, y mitigar el riesgo de ser víctimas de que nos descifren nuestras claves, entonces debemos incrementar la longitud y complejidad de las claves usadas.
El tiempo necesario para descifrar una contraseña se basa en la siguiente formula:

Dónde:

  • Número de posibles caracteres: Es el número de dígitos o caracteres que nos permite introducir. Algunos servicios sólo permiten letras, esto nos daría 26 caracteres en minúsculas y 26 caracteres en mayúsculas, si le agregamos números, entonces se aumenta 10 caracteres, si el sitio permite símbolos estaríamos hablando de más o menos 30 caracteres imprimibles más. Lo cual arroja un resultado aproximado de 92 caracteres en total.
  • Longitud de la contraseña: El tamaño de la clave o contraseña que se quiere descifrar. Ejemplo “pato” es una contraseña con 4 caracteres de longitud.
  • Cálculos por Segundo: Es el número de contraseñas aproximado que una computadora común puede procesar en un segundo. En nuestro ejemplo sería 10,000,000 de operaciones por segundo.

 

Aplicando lo antes expuesto, entonces podemos determinar que una clave como la palabras “SEGURO” puede ser descifrada aproximadamente en unos 30 Segundo, mientras otra como “miCl4v3es@segur4″ se toma unos 193 Trillones de Años.

 

 

Para lograr obtener una clave segura, una de las reglas fundamentales es elegir una buena contraseña y estas se basan en su longitud y en la variedad de los caracteres que la componen, cuanto mayor sea su tamaño y más heterogéneos los elementos que la integran, más difícil será que la descifre un eventual atacante.

Una buena práctica consiste en crear claves de al menos 12 caracteres de longitud, compuesta por letras, dígitos y símbolos especiales.

Para tener en cuenta…
Hay muchos usuarios que optan por utilizar la misma contraseña para varias de sus aplicaciones y servicios, evitando así tener que recordar varias contraseñas diferentes, sin embargo esto aumenta el riesgo de que un atacante robe su identidad digital empleando diversos métodos.

Es imprescindible determinar la importancia de las cuentas a proteger. Las contraseñas de acceso al equipos, al correo, a la banca electrónica y a cualquier aplicación que contenga información confidencial, deben ser únicas para cada servicio, de mayor complejidad y deben sustituirse periódicamente.

1.- Cómo proteger tus cuentas:  Es importante mantener en secreto tus datos de cuenta. Nadie, excepto tú debería saber tu contraseña y/o respuesta secreta; ni tu hermano, ni tu mejor amigo.

Mis humildes sugerencias

Cambia tu contraseña regularmente
.

Evita usar la misma contraseña en otros sitios, tratando que sea diferente a la que utilizas en tu correo electrónico, twitter, facebook, gmail, google+, etc.

Utiliza combinaciones, es recomendable el uso de mayúsculas y minúsculas combinadas con números y signos de puntuación (en especial aquellos que son comunes en su ubicación en el teclado sin importar en que idioma) al momento de crear tu contraseña e intenta que no guarde relación con tu nombre, domicilio, gustos musicales o cualquier dato que pueda vincularse contigo. Te recomiendo el uso de oraciones completas y que sus palabras esten en varios idiomas, de esta forma para intentar descubrirla por ataques de fuerza bruta tardarían miles de años con un supuesto inmenso poder computacional

No abras correos anónimos, mucho menos si te pide alguna confirmación de cuenta en cualquier servicio electrónico, en ningún momento el Los Administradores de estos servicios te enviara un correo pidiendo que ingreses tus datos en ninguna pagina, o correos de confirmación en la cual este involucrada tu contraseña de ingreso. Esto no se usa a fin de evitar los ataques de Phishing.
Evita contraseñas como: “Dios”, “Amor”, “Sexo”, “Pasión”, “Rojo”,”1234567″, “password”, “P4ssw0rd”, “Clave”, “abc123″, “admin”, inclusive la combinación entre estas y/o números. En caso contrario entraras de lleno al no tan selecto grupo de usuarios con las claves mas fragiles y propensas a ser descubiertas.
Cuida tu Equipo: No instales aplicaciones descargas de la Internet de sitios que no sean de tu extrema confianza, evita el uso de software ilegal, si usas MacOS X, descarga aplicaciones de la AppStore, si usas Linux, instala aplicaciones sólo de repositorios de confianza y nada que haya podido ser modificado por algún desconocido.

Ahora bien, si realmente estás preocupado por si tu contraseña es segura o no, o si estás completamente seguro de que lo es, te invito a que visites entonces http://howsecureismypassword.net/

 

 

Instalando servico ‘M$-ClickOnce’ en Ubuntu + Apache2 (Instalaciones, Actualizaciones y Ejecución de Aplicaciones Windows via WEB)

Para una de las empresas con que laboro, se ha hecho necesario mejorar la forma en que despliegan sus aplicaciones Stand Alone que han sido desarrolladas en casa, para ello me han solicitado que establezca un servidor M$-IIS, a lo que me negué rotundamente (claro esta con la alternativa en la mano) y les propuse usar un Ubuntu Server 10.04.3 con Apache2.

Ellos no tuvieron objeción alguna, para lo que investigaron los desarrolladores, y entendieron que si se podía usar otro motor WEB distinto al IIS. Por lo que comenzaron a modificar sus aplicativos e instaladores a fin de que funcionaran correctamente.

A continuación, y como siempre, para que no se me olvide, dejo anotado que fue lo que hicimos…

En primer lugar procedimos a la instalación, común de un servicio Apache2 sobre el equipo Ubuntu. para ello como de costumbre:

sudo apt-get update && sudo apt-get install apache2

Luego de tener listo el apache, se crearon las carpetas dentro del directorio /var/www donde se colocarían los instaladores de cada aplicativo

sudo mkdir -p /var/www/MiAplicacion

y luego se definió un un archivo .htaccess al cual le colocaremos el contenido referente al aplicativo a instalar.

touch /var/www/MiAplicacion/.htaccess

Agregamos al archivo creado (.htaccess) el siguiente contenido: (Pudes hacerlo con vim, nano, o lo que mas te guste, yo uso vi, por eso lo hice asi:

sudo vi /var/www/MiAplicacion/.htaccess

Pulsa la tecla “i” y entraras en modo edición, escribe lo siguiente:

AddType application/x-ms-application application
AddType application/x-ms-manifest manifest
AddType application/octet-stream deploy
AddType application/x-msdownload dll

Una vez escrito todo, procedes pulsando la tecla <ESC> del teclado, puedes hacerlo par de veces, esto hará que el vi entre en modo comandos, para invocar los comandos de Guardar y Cerrar pulsaras, dospuntos:” y luego las letras wq y finalmente enter, recuerda que todo debe ser en minúsculas.

:wq

Entonce, tendras nuevamente el prompt del BASH (Interprete de Comandos), alli nos toca ahora tan solo incluir los respectivos MIME para que el APACHE interprete correctamente las extensiones a publicar, para ello procedemos editando el archivo /etc/apache2/mods-available/mime.conf

vi /etc/apache2/mods-available/mime.conf

Dentro de este archivo procederemos a colocar el siguiente contenido, de la misma forma que lo hicimos antes:

## MIME incluido para que funcione el Apache como IIS en el Clickonce
 AddType application/x-ms-application                   .application
 AddType application/x-ms-manifest                      .manifest
 AddType application/octet-stream                       .deploy
 AddType application/octet-stream                       .msu
 AddType application/octet-stream                       .msp

###

Habiendo hecho todo esto, tan sólo nos toca reiniciar el servicio de Apache2 y pedirle a nuestros desarrolladores que coloquen los instaladores que generan ellos con el Visual Studio en el directorio /var/www/MiAplicacion   y  Listo.

De ahora en adelante, instalar, actualizar y ejecutar la aplicación será mucho mas fácil y rápido para aquellos que aun dependen de ello. (Espero que pronto se vaya todo a Web)

Cómo crear imágenes de disco VMware en Ubuntu con qemu?

Con frecuencia, estoy aprovisionando nuevos equipos virtuales, y normalmente luego de hacerlo, el usuario funcional, recuerda que no me explicó que allí, además de los servicios se almacenarían cierta cantidad de archivos, que sobrepasan el espacio originalmente considerado en el FileSystem.

En consecuencia, me toca colocarle mas disco, lo que mas me molesta de esto, es que siempre olvido el comando para crear el disco, en consecuencia procederé a documentarlo acá. Así si se me olvida, siempre tendré un sitio conocido donde recordarlo.

El comando para crear discos en qemu es el qemu-img, este  se le deben pasar los parámetros que permitirán indicarle que tipo y características tendrá la imagen de disco a crear.  El siguiente ejemplo, muestra como crear un disco de 10Gb tipo vmdk

# qemu-img create -f vmdk mynewdisk.vmdk 10G

Esta unidades .vmdk que crea el qemu, si mal no recuerdo haber leído, son versión 3, muchos me preguntan que porque uso .vmdk si ese es el formato nativo de VMware. Resulta que estas imágenes .vmdk pueden ser usadas tanto en por qemu como por VirtualBox y logicamente por VMWare (workstation y/o ESXi) lo que me permite en caso de tener que ante un desastre, restaurar el servicio, hacerlo mucho mas rápido, pues la portabilidad permite ofrecer rápidas respuestas y soluciones.

 

Como configurar un servidor Web que atienda por nombre del URL (Ubuntu+Apache2+VirtualHost)

Saludos amig@s todos,

Hace unos dias atras, un buen amigo y colega me pedió ayuda para entender como hacer un Name Virtual Host con el Apache2 en su servidor Ubuntu. Por lo que al igual que en otras oportunidades he preferido hace una breve explicación de como al menos lo hago y lo entiendo yo. Así pues acá dejo una breve explicación. NO es un HOWTO es simplemente como he entendido.

NOTA IMPORTANTE: Asumo que usted tiene instalado Apache2 en su servidor, de no ser así recuerde ejecutar en su consola: sudo apt-get install apache2

Es importante definir que es un Name Virtual Host, cuando accedemos a una pagina web, es decir cuando colocamos el URL o nombre del sitio en nuestro navegador, este luego de la resolución de nombre, procede a acceder al servidor WEB por el puerto que corresponda (normalmente 80 y 443). Lo importante del proceso es que nuestra maquina le envia como pregunta al servidor web, la URL o el nombre del sitio que esta buscando.

Este nombre lo ve el servicio de Apache2, y es gracias a esto que podemos definir que pagina servir al momento de que accedan.

Normalmente todo esto se configuraba antes en el archivo /etc/httpd/httpd.conf . En Ubuntu ahora eso ha cambiado, pues ahora el archivo de configuración es el /etc/apache2/apache.conf

Sin embargo, para evitar accidentes y la mitigar la probabilidad de dañar el archivo en cuestión, ahora tambien se crearon los directorios:

  • /etc/apache2/sites-available
  • /etc/apache2/sites-enabled

En el /etc/apache2/sites-available/ se encuentran los archivos de configuración para cada sitio que queramos hospedar, por defecto existe un archivo llamado default y su contenido suele ser:

	
<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /var/www/>
           RewriteEngine on
           RewriteBase /
           RewriteCond 5[REQUEST-FILENAME] 1-f
           RewriteCond 5[REQUEST-FILENAME] 1-d
           RewriteRule 69.804 index.php/q=41 [L,QSA]
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All 
        Order allow,deny
        allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog /var/log/apache2/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog /var/log/apache2/access.log combined

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>

Como podemos ver, el contenido del archivo es en sí una declaración de VirtualHost, que comienza indicando:

'<VirtualHost *:80>' = HostVirtual por todas las interfaces por el puerto 80
'DocumentRoot /var/www' = La raíz del los documentos de este sitio
'<Directory /var/www/>'= En el directorio tal se mostrará

Ok, entonces para esto sirve para que toda petición WEB que venga por el puerto 80 (HTTP) muestre el contenido del directorio /var/www

Para poder hacer entender al Apache2 que debe entregar otra página distinta a /var/www hacemos lo siguiente. Supongamos que vamos a hospedar una pagina web de un sitio llamado CONTOSO.ORG entonces lo primero que debemos hacer es crear nuestro directorio donde se colocarán los archivos de este sitio web. Para ello hacemos:

rolando@webserver: ˜$ sudo mkdir -p /var/www/contoso

rolando@webserver: ˜$ sudo touch /var/www/contoso/index.html

rolando@webserver: ˜$ sudo echo “HOLA MUNDO” > /var/www/contoso/index.html

Con esto hemos creado entonces un directorio en el cual colocar los archivos que queremos servir a el sitio contoso.

Ahora nos toca hacer que el Apache2 lo entienda cuando llamamos a un sitio con ese nombre y que entregue entonces la pagina que hemos creado.

Para ello lo primero que haremos es copiar el archivo default con el nombre de contoso para que no se nos olvide y sea mas facil identificarlo, para ello hacemos:

rolando@webserver: ˜$ sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/contoso

Luego editamos el contenido del mismo, para hacer las siguientes modificaciones:

"
<VirtualHost *:80>
        ServerAdmin webmaster@localhost
     ServerName contoso.org
 ServerAlias www.contoso.org
        DocumentRoot /var/www/contoso

        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/contoso/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>

        ErrorLog /var/log/apache2/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog /var/log/apache2/access.log combined

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>
"

Una vez lista las modificaciones realizadas en negritas, debemos entender que aunque hayamos creado el archivo contoso dentro de /etc/apache2/sites-available/ este está disponible mas no está habilitado.

Entonces debemos habilitarlo, para ello tenemos que crear un enlace simbolico que apunte del directorio de disponibles (/etc/apache2/sites-available/) al directorio de sitios habilitados (/etc/apache2/sites-enabled/) para conseguir esto ejecutaremos:

rolando@webserver: ˜$ sudo ln -s /etc/apache2/sites-available/contoso /etc/apache2/sites-enabled/

Habiendo creado el enlace simbolico de este nuevo sitio, procedemos entonces a reiniciar el servicio de apache2 con:

rolando@webserver: ˜$ sudo /etc/init.d/apache2 restart

Si todo lo hemos hecho bien, entonces nuestro sitio web atenderá ademas de la pagina por defecto con los archivos de /var/www/ cuando le pregunten a este por contoso.org o por www.contoso.org entregará las paginas existente en /var/www/contoso

Espero que esta breve explicación, sirva como incentivo para seguir revisando, aprendiendo y entendiendo cada vez mas el funcionamiento del Apache Server en un Servidor de Ubuntu server.

Claro debe quedar que podemos tener tantos sitios virtuales como nuestro servidor soporte, y además que para que funcione todo bien, los servidores DNS deben estár resolviendo correctamente el sitio y apuntando a nuestro servidor Apache2.

Si no tienes control sobre tus DNS Servers, puedes probar temporalmente colocando las entradas en el archivo /etc/hosts

Cómo montar recurso compartido remoto de Windows en Linux

Como ya he escrito anteriormente, en GNU/Linux existe toda una jerarquía de archivos, que pretende organizar los archivos de nuestro sistema, recordemos tambien que para Linux existe tan sólo tres tipos de archivos, Los Especiales, Los Normales y Los de Directorio.

El montaje via SMB o CIFS, pretende conectar un recurso compartido por Windows como una carpeta (Archivo de Directorio) y poder acceder al mismo en una carpeta local dentro de nuestra jerarquia.

Utilizaré el comando mount para montar a distancia el recurso compartido de Windows en Linux de la siguiente manera:

Procedimiento para montar recurso compartido de Windows a en jerarquía Linux

1) Asegúrese de que tiene la siguiente información:
–> Windows nombre de usuario y contraseña para acceder a nombre del recurso compartido
–> NombreDeRecursoCompartido (por ejemplo, / / ??server / share) o la dirección IP
–> El nivel de raíz el acceso de Linux

2) Ingresar al equipo Linux como usuario root (o utilizar el comando su o sudo)

3) Crear el punto de montaje requerido:

# mkdir -p /ruta/donde_montar

4) Utilice el comando mount de la siguiente manera:

# mount -t cifs //windowsserver/recursocompartido -o username=nombreusuariowindows,password=PasswordUsuarioWin /ruta/donde_montar

Utilice el comando siguiente si usted está usando una versión antigua, como Red Hat Enterprise Linux <= 4 o Debian <= 3:

# mount -t smbfs -o username=nombreusuariowindows,password=PasswordUsuarioWin //windowsserver/recursocompartido /ruta/donde_montar

Donde,

  • -t smbfs: Tipo de archivo del sistema que se monte
  • -t cifs: Tipo de archivo del sistema que se monte (Nueva versión del smbfs)
  • -o: son las opciones pasadas al comando mount, en este ejemplo que había pasado dos opciones. El primer argumento es el nombre de usuario  (nombreusuariowindows) y el segundo argumento es una contraseña para conectarse.
  • //windowsserver/recursocompartido: Windows 2000/NT nombre del recurso compartido en Windows.
  • /ruta/donde_montar  punto de montaje (para compartir el acceso después del montaje)

Buscando entre archivos

En estos días, me preguntaron acerca de como hacer una busqueda de un contenido desde BASH, por lo que se me ocurrio escribir algo mas completo acerca del tema en mi Blog, sin embargo, me tome la libertad de googlear a ver si alguien ya lo había escrito, y encontré entonces lo que a continuación publico.

Aprendí de acá unos truquitos que espero les sirvan:

Autor: Guido Shocher, LinuxFocus
Traducido por Ruben Sotillo
Copyright pertenece al autor

Buscando ficheros por nombres

Probablemente puedes recordar este problema: Tenías algún tipo de fichero y no podías recordar donde lo pusiste.

Aquí es donde el comando find viene a ser útil. ¿Cómo usarlo? find viene, por supuesto, con un extenso man page pero veamos unos “casos típicos”: Buscar un archivo llamado lostfile.txt, recorriendo el árbol de directorios comenzando en el directorio actual:

find . -name lostfile.txt -print

find acepta también wildcards. Recuerda colocar entre comillas los wildcards, de lo contrario el shell no los reconocerá como tales. Aquí un ejemplo:

find . -name “lost*” -print

Este comando puede ser un poco lento cuando necesites buscar en un árbol de directorios muy grande. Aquí el comando locate puede ayudar. Este realmente no busca directamente un archivo en el sistema de ficheros. Busca en una base de datos. Es bastante más rápido pero la base de datos podría estar desactualizada. En algunas distribuciones la base de datos localizada es actualizada cada noche pero puedes, por supuesto, correr el comando updatedb manualmente de vez en cuando para actualizarla. locate realiza búsquedas de subcadenas.

locate lostfile

Este localiza los ficheros lostfile.txt o mylostfile.txt, etc…

Hasta ahora estabamos buscando ficheros de los cuales teníamos una remota idea de sus nombres. Tal vez el nombre del archivo no era lostfile.txt sino lastfile.txt o leastfile.txt o lostfile.txt o Lostfile.txt o lostfile.text y no puedes recordar exactamente el nombre. ¿Cómo podrías encontrar el archivo aún? en este caso podrías usar una utilidad para encontrar ficheros que tolera fallas en la escritura del nombre llamada ftff (fault tolerant file find). Esta utilidad busca el archivo y permite un número de “errores en la escritura”. Este comando encontraría los nombres mal escritos de los ficheros:

ftff lostfiles.txt

El número permitido de errores en la escritura del nombre depende del largo del mismo pero también puede establecerse con la opción -t. Para permitir un máximo de 2 errores y usar también un wildcard, sólo tipea:

ftff -t2 “lostfiles*”

ftff es un programa de mi autoria y forma parte de un paquete llamado whichman-1.4 que puede ser bajado de
sunsite.unc.edu/pub/ Linux/apps/doctools/whichman-1.4.tar.gz

Algunas veces te gustaría encontrar todos los ficheros en el árbol de directorios que no contengan cierta cadena. Por ejemplo todos los ficheros excepto .o y .c. Aquí están un par de posibilidades para hacerlo::

find . ! -name “*.o” ! -name “*.c” -print
find . -print | fgrep -v ‘.o’ | fgrep -v ‘.c’
si tienes la versión gnu de find: find | fgrep -v ‘.o’ | fgrep -v ‘.c’
find | egrep -v ‘.[oc]‘

Obteniendo una vista completa del sistema de ficheros

Algunas veces te agradaría tener una visión total del sistema de ficheros frente a ti. Por ejemplo: Tienes un nuevo CD y quisieras ver que es lo que tiene. Podrías usar solamente ls -R. Personalmente prefiero por fácil lectura uno de los siguientes: tree dibuja un diagrama de árbol (sunsite.unc.edu/pub/Linux/utils/file/ tree-1.2.tgz ).

tree
o con nombres largos de archivo: tree -fF

También está por supuesto, el viejo, pero buen find. La versión GNU de find, que viene usualmente con Linux, también tiene la posibilidad de cambiar el formato de impresión para imprimir, por ejemplo el tamaño del archivo con el nombre:

find . -ls
find . -print o con gnu find: find
find . -printf “%7s %pn”

Hay también un pequeño programa en perl usando el comando ls que hace cosas similares. Se puede bajar de aquí: lsperl. Puedes encontrar probablemente muchas más herramientas para ver ficheros pero ésta es, para la mayoría de los casos, suficiente.

Encontrando ficheros por contenido (buscando cadenas de texto en ficheros)

La utilidades standard para buscar cadenas de texto en ficheros son grep/egrep para la búsqueda de expresiones regulares y fgrep para buscar cadenas literales. Para buscar una expresión en todos los ficheros del directorio actual sólo tipea:

egrep -i “search expression” *

Para buscar cadenas en todos los ficheros de todo el árbol de directorios puedes combinar el comando find con otro comando de búsqueda de archivo, por ejemplo: egrep. Esto puede ser realizado de muchas formas:

egrep -i “expression” `find . -type f -print`
find . -type f -exec egrep -i “expression” /dev/null {} ;
find . -type f -print | xargs egrep -i “expression”

Si encuentras ésto díficil de recordar entonces puedes usar un pequeño shell script que puedes encontrar aquí grepfind Este script también se asegura que caracteres no imprimibles sean removidos en caso de que ejecutes egrep en un archivo binario.

Un programa de búsqueda muy interesante es agrep. Este funciona básicamente como egrep pero realiza búsquedas que toleran errores en la escritura del nombre. De esta manera puedes también encontrar palabras mal escritas. Para buscar una expresión con un máximo de dos errores de escritura puedes usar:

agrep -i -2 “search exprission” *

El programa agrep puede ser bajado de sunsite sunsite.unc.edu/pub/Linux/util s/text/agrep-2.04.tar.Z o de su sitio original ftp://ftp.cs.arizona.edu/agrep/

También está glimpse. Esta es una poderosa utilidad de búsqueda. Utiliza un concepto similar a locate. Primero una base de datos necesita ser construida, para que la búsquedas sean rápidas. Para construir una búsqueda indexada del contenido de todos los ficheros empezando en el directorio actual:

glimpseindex .

Después de eso puedes buscar una cadena en todos los ficheros que fueron previamente indexados

glimpse -i -2 “search exprission”

glimpse también tolera errores de escritura (como agrep) y el -2 permite dos errores. glimpse está disponible en http://glimpse.cs.arizona.edu/

Archipel Project – Orquestando nuestra virtualización

Desde hace algún tiempo vengo echandole el ojo a un proyecto que me ha llamado mucho la atención, de hecho tanto que he querido involucrarme en el mismo a fin de paquetizarlo para Ubuntu. Lamentablemente el tiempo no ha sido mi aliado, es por ello que aprovecho de invitar a todo aquel que quiera, pueda y sepa a participar con este excelente trabajo.

El proyecto Archipel en un orquestador que se aprovecha de las librerias de virtualización Libvirt y de XMPP, para conectarse con equipos virtualizadores permitiendonos de una forma fácil y via Web, el administrar nuestras maquinas virtuales.

En la página del proyecto, encontramos que:

Todo es sobre el tiempo realUna de las cosas más importantes sobre Archipel es su trabajo en tiempo real. Cada evento se inserta tan pronto como se produce. Cuando una entidad – hipervisor máquina virtual, o lo que sea – tiene algo que decir, la información se envía a través de la plataforma. Si no ocurre nada, bueno, no pasa nada. Archipel, se escribió con Growl para las aplicaciones en Cappuccino, que permite desplegar elegantemente llamado GrowlCappuccino. Gracias a este framework, se le notificará tan pronto como se produce un evento, donde quiera que estés ejecutando en la aplicación. 

Todas las tareas que se realizan en tiempo real es gracias a XMPP (anteriormente conocido como Jabber ). Cada máquina virtual hipervisor, o controlador es una entidad XMPP capaz de enviar y recibir mensajes, comandos y la información de otras entidades, real o virtual….

Libvirt, el traductor universalLibvirt es una biblioteca de código abierto que permite a las aplicaciones para conducir los motores de virtualización con un protocolo unificado. No sólo estamos hablando de puesta en marcha o shutdowning una máquina virtual, sino que también los define, el establecimiento de redes de hipervisor y la creación de agrupaciones de almacenamiento. Libvirt es compatible con KVMOpenVZde Sun VirtualBoxXen e incluso con VMware . Y es así como con Archipel es posible utilizar diferentes motores de virtualización y control de
todos ellos desde la misma interfaz web. 

Libvirt está empaquetado en la mayoría de las distribuciones de Linux. Es muy fácil de instalar y configurar.

Archipel es un proyecto que apenas está naciendo, pero particularmente le auguro mucho éxito, progreso y prosperidad, espero verlo pronto paquetizado para todas varias distribuciones y en especial para Ubuntu.

Si quieres saber mas de Archipel, no dudes en visitar y participar en su proyecto:

http://archipelproject.org/

Nace un nuevo proyecto, LinBerry

Si eres usuario de teléfonos BlackBerry mi primera recomendación es que consideres un equipo con Android, si este no te gusta, entonces prueba un iPhone (y le hace JB) pero si insistes en el BlackBerry siendo un usuario GNU/Linux, entonces es posible que la aplicación concluyente de este proyecto te interese. Hace algunas semanas atras, el amigo Israel, me notificó de su participación como diseñador del proyecto Linberry, por eso hoy te dejo más información acerca del mismo.

Sigue leyendo

@rolandoblanco