Buenos hábitos en Linux Shell

Desde hace ya muchos años uso GNU/Linux de forma habitual, tanto en el trabajo como a nivel personal. Una de las grandes ventajas de usar este sistema operativo es la facilidad con la que puedes hacer las mismas cosas desde la consola. bash puede y debe ser tu gran aliado. Aunque a primera vista puede resultar feo trabajar en modo consola, sobre todo en los días que corren, la potencia que ello te da es tanta que da pena desaprovecharla.
Hoy os voy a dar algunos consejos acerca de buenos hábitos a la hora de emplear bash. Hay miles, así que este listado irá creciendo.
  1. Creación de directorios
    Es uno de los puntos más conflictivos a la hora de trabajar. El comando está claro, mkdir, pero la forma de crear árboles complicados puede ser muy diferente.
    Un mal ejemplo,
    shell> mkdir tmp
    shell> cd tmp
    shell> mkdir a
    shell> cd a
    shell> mkdir b
    shell> cd b
    shell> mkdir c
    shell> pwd
    ~/tmp/a/b/c
    
    Y ahora un buen ejemplo,
    shell> mkdir -p tmp/a/b/c
    
    Y otro ejemplo práctico más simple y útil que denota la potencia de emplear mkdir correctamente.
    shell> mkdir -p project/{lib,src,doc/{html,pdf},demo/stat}
  2. Descomprimir ficheros
    En GNU/Linux la extensión tar.gz suele ser muy empleada para trabajar con ficheros. Tras descargarla de donde corresponda, generalmente nos queda el fichero en la carpeta habitual de descargas, pero para trabajar con él, toca descomprimirlo. Una mala práctica es descomprimirlo directamente en dicha carpeta, ya que terminamos por dejar el directorio sucio, mientras que una buena práctica es emplear la opción -C del propio comando, que nos permite establecer la ruta completa donde será descomprimido, sin tener que mover el fichero descargado.
    shell> tar zxvf -C /tmp zabbix.tar.gz
    
  3. Entrecomillado de variables
    Hay que tener cuidado a la hora de definir y de entrecomillar una variable o su resultado. Así evitaremos sorpresas futuras.
    shell> mkdir -p test/{a,b}
    shell> ls test
    a  b
    shell> VAR="test/*"
    shell> echo $VAR
    test/a test/b
    shell> echo "$VAR"
    test/*
    shell> echo $VARa
    
    shell> echo "$VARa"
    
    shell> echo "${VAR}a"
    test/*a
    shell> echo ${VAR}a
    test/a
    
  4. Concatenar comandos siempre que sea posible
    Esta es una de las partes en las que más potencia tiene la shell de GNU/Linux, la concatenación de comandos. La salida de un comando puede ser la entrada de otro y así recursivamente, pero hay que tener mucho cuidado con lo que intentamos redirigir y hacerlo con mucha cabeza. Por ejemplo:
    1. No usar cat para lista y grep para filtrar. Filtrar directamente!
      shell> cat file.txt | grep "hola"       # mal
      shell> grep "hola" file.txt             # bien
      
    2. Evitar usar grep y luego contar líneas. Emplea las opciones de grep (-c)!
      shell> grep "hola" file.txt | wc -l  # mal
      shell> grep -v "hola" file.txt       # bien
      
    3. Emplea, siempre que sea posible awk y no grep. Es mucho más rápido!
      shell> ls -l /tmp/a/b/c | grep sep   # mal
      shell> ls -l | awk '$6 == "sep"'     # bien
      
  5. Emplea expresiones de control para concatenar comandos
    Si te interesa que un comando se ejecute siempre que el anterior se haya ejecutado correctamente, hazlo en una única línea. Y también al revés.
    1. La cadena && permite la ejecución si el comando anterior ha devuelto un status 0 (terminó correctamente).
      shell> cd /tmp && tar zxvf ~/archive.tar
      
    2. La cadena || indica que se haga el segundo comando si el primero no tuvo una salida 0 (correcta).
      shell> cd /tmp || mkdir /tmp && tar zxvf ~/archive.tar
      
  6. En scripts, comprueba recursos antes de emplearlo
    Si estás creando un script con acceso a ficheros, comprueba que estos existan antes de usarlos. Te evitarás malas jugadas!
    if [ -d "/Fichero/necesario" ]
    then
       ...
    else
       #fichero no existe!
    fi
    

La entrada Buenos hábitos en Linux Shell la puede leer en Puppet Linux.
Leer más

Spam intenta suplantar Whatsapp

En los últimos días saltó a la palestra un envío masivo de spam por parte de 'alguien' que dice ser WhatsApp y que te informa de que tienes un nuevo mensaje de voz para escuchar. Los correos que se están enviando tienen una forma similar a esta que sigue,
WhatsApp spam
Partamos de que este mail NO tiene ningún tipo de validez, ya que no os lo está enviando la famosa compañía de mensajes, sino que, por lo menos en mi caso, quien lo está enviando es la cuenta service AT casa-soleil DOT de, "WhatsApp Messaging Service" y realmente está saliendo de un host llamado soft-works.housingnetz.net. No deja de ser cuando menos gracioso. Está claro, que no es de mensajería ni tiene nada que ver con ellos, simplemente aprovecha la fama para infectar ordenadores.
Intenté ver un poco más acerca de qué hace la URL maliciosa que indican, pero el host en el que se alojaba parece que ya está desinfectado y no hay rastro de los ficheros ni enlaces a los que mandaba. Por lo que pude leer, la idea era que al pinchar se descargaba un código malicioso, pero no pude saber qué hacía. Si consigo un enlace levantado, actualizaré.
Así que ya sabéis, si veis algún e-mail que provenga de WhatsApp, desconfiar, es muy raro que os lo envíen, especialmente si nunca le habéis dado vuestra dirección. Ante la duda, no tengáis la curiosidad de ver qué es.

La entrada Spam intenta suplantar Whatsapp la puedes leer en Puppet Linux.
Leer más

Sugerencias de exploit para GNU/Linux

Sí, estuve de vacaciones, no literalmente (que más quiera), pero sí me tomé un tiempo sin escribir. Desde el último post ya pasaron días, pero no por eso opté por no seguir, sino que necesité tiempo. Poco a poco volveré a coger el ritmo, según pueda hasta intentar nuevamente actualizar diariamente el blog con cosas interesantes.
Hoy, para volver, os presento un proyecto interesante Linux_Exploit_Suggester, que no es más que un pequeño código escrito el perl que permite, en función del kernel de tu sistema, buscar un listado de exploits que sirvan para vulnerar la seguridad del mismo.
No hace demasiadas comprobaciones a nivel de seguridad, simplemente en función de la salida del comando "uname -r" sugiere aquellos posibles exploits que puedes usar. Supongo que si va teniendo un mínimo de alcance lo desarrollarán más y quien sabe, puede terminar siendo uno de los grandes.
Si le queréis dar la oportunidad, el ejecutable está disponible en github y su uso es muy sencillo.
shell> uname -r
2.6.32-5-xen-686
shell> perl Linux_Exploit_Suggester.pl 

Kernel local: 2.6.32

Searching among 63 exploits...

Possible Exploits:
[+] american-sign-language
   CVE-2010-4347
   Source: http://www.securityfocus.com/bid/45408/
[+] can_bcm
   CVE-2010-2959
   Source: http://www.exploit-db.com/exploits/14814/
[+] half_nelson
   Alt: econet    CVE-2010-3848
   Source: http://www.exploit-db.com/exploits/6851
...
Espero que os pueda resultar útil para comenzar a trastear.

Leer más

Formulario de contacto

Nombre

Correo electrónico *

Mensaje *

Últimos comentarios