[HowTo] Como grabar una sesión en la consola de comandos de Linux.

En determinadas circunstancias (léase: mañana mismo ya no te vas a acordar de como fué que hiciste la tal o cual cosa), puede que te interese grabar un registro, un log, de todo lo que tu consola de comandos fué escupiendo y lo que le fuiste respondiendo en consecuencia.

Mas command Line Ninjitsu en Maldito Nerd y ya empieza a darme vergüenza usar siempre la misma fotito esta…

Si alguna vez te pasó cualquiera de estas, deberías seguir leyendo:

  • Necesitás reproducir todo el setup de la tal o cual aplicación que instalaste en una PC hace tres años, en otra PC que acabás de adquirir. Ni te acordás por donde empezar y el tutorial que seguiste aquella vez no lo encontrás por ningún lado, o nunca hubo e improvisaste sobre la marcha.
  • Como nunca lo encontraste, seguís un tutorial nuevo, hacés mierda todo y tenés que volver a empezar de cero por que llegaste al punto donde es mas rápido reinstalar que debuggear.
  • Necesitabas leer la salida del último comando que tipeaste, pero te escupió tanto texto junto que lo importante te quedó fuera del buffer así que por mucho scroll hacia arriba que hagas, estás cagado.
  • Estás corriendo algo dentro de una sesión de screen, te quedaste sin tabaco así que tuviste que salir de urgencia al kiosko de la esquina. Cuando volvés, te quedaste sin internet , se te cerró la conexión SSH, se te cerró screen y te perdiste de algo importante por que otra vez, te falta buffer.
  • Tenés que darle shell a tu (amigo/empleado/cliente/subordinado/programador nigeriano freelance) y querés registrar en un log todo lo que pase mientras el susodicho esté logueado solamente por que paranoia mejor que sobre y no que falte.
  • Por último, la mas boluda de todas pero es la que el manual propone como la única cosa para la que sirve: Necesitás tomarle examen a tus alumnos… ¿?

Y así sucesivamente, un largo etcétera… Sigue leyendo

[TIP] Como recargar .bashrc o .bash_profile sin cerrar la sesión de consola.

¿Alguna vez te preguntaste por que escribís siempre «sudo su -«, que quiere decir cada parte del comando y por que se concatenan en ese orden?

Como seguramente sabrás –y si no lo sabías, bienvenido al club de los que si lo saben-, cada vez que un usuario inicia sesión en la consola, se ejecuta el comando login, que toma la configuración y el comportamiento por defecto de lo que hubieras especificado en el archivo /etc/login.defs, ejecuta a continuación todo el contenido de /etc/bash.bashrc y por último el contenido de ~/.bashrc y ~/.bash_profile

Otro poco de command line ninjitsu, que hacía mucho que no escribía al respecto y ya le tocaba.

Nota al margen o micro tip anidado: Decir «~» es equivalente a decir /home/<aquí tu numbre de usuario> así que si estás en la consola como tal o cual usuario y necesitás volver a tu home, todo lo que tenés que hacer ejecutar:

cd ~

O mejor, MUCHO mejor:

cd

Volviendo al tema que nos ocupa, cuando necesitás definir por ejemplo, un alias en bash de manera global, lo hacés editando /etc/bash.bashrc y cuando querés que ese alias solo sea válido para tal o cual usuario, lo hacés editando el archivo .bashrc que está en el directorio home del mismo (y que me faltó aclarar, no necesariamente tiene que ser /home si no que puede ser cualquier otro path arbitrario. Para mas info vean el archivo login.defs o /etc/passwd).

Sigue leyendo

[MicroTip anidado] Como escribir un comando en la consola de Linux sin que quede registrado en el historial (.bash_history)

En Linux, se pueden recuperar comandos tipeados con anterioridad haciendo uso por ejemplo de las flechas de cursor hacia arriba y hacia abajo o si tu /etc/inputrc contiene:

"\e[5~": history-search-backward

"\e[6~": history-search-backward

Tipeando parte del comando y presionando Page-Up o Page-Down para ir recuperando todos los comandos que tipeaste en otras oportunidades que coincidan con lo que llevás escrito hasta el momento.

Por ejemplo, para recuperar todos los comandos tipeados que comiencen con “nano”, bastaría escribir “nano” y usar Page Up y Down para ir conmutando en el historial entre todos los comandos que coincidan con el criterio de búsqueda. (Y de paso, anidé un tip dentro de otro tip).

Olvidémonos de que a veces uno anda haciendo chanchadas y vayamos al ejemplo mas típico: Necesitás tipear un comando que contiene información sensible, el nombre de un archivo, un nombre de dominio o una contraseña que preferirías mantener en secreto.

Necesitás tipear un comando que no quede registrado en el historial de comandos para que no lo lea alguien mas.

Este alguien mas podría ser un compañero de trabajo, otro proveedor o programador que usa tu mismo login o tiene la contraseña o key de root o para los mas paranoicos, un hacker que comprometió el sistema.

¿Como hacer para ejecutar el comando sin dejar rastros/registros?

Sigue leyendo

[TIP] Como ripear CDs de audio en Linux

Esta es dificilísima de usar, como todo en Linux.

Usando este avanzadísimo y super complicado script podés ripear tus CD de audio a MP3 para guardarlos en tu PC en caso de que se rompa el CD y subirlos a Grooveshark en caso de que se rompa tu PC:

#!/bin/bash
# ----------------------------------------------------------------------------
# Written by Vivek Gite <http://www.cyberciti.biz/>
# (c) 2006 nixCraft under GNU GPL v2.0+
# ----------------------------------------------------------------------------
read -p "Comenzando en 5 segundos ( CTRL + C para abortar ) " -t 5
cdparanoia -B
for i in *.wav
do
	lame --vbr-new -b 360 "$i" "${i%%.cdda.wav}.mp3"
	rm -f "$i"
done

¿Cómo se usa? Simple: ejecutás el script en la carpeta en donde quieras almacenar los mp3, el script se conecta a CDDA y te baja desde internet el título de la canción y el artista y los usa como nombre para el archivo .mp3 que genera. Tiene como dependencias cdparanoia y lame. La instalación de estas dependencias en Gentoo no podría ser mas complicada:

emerge lame cdparanoia

Todos los créditos para el autor intelectual del script. Yo apenas si traduje una línea.

No vas a encontrar un método mas simple que este.