[TIP] Como pasar/convertir del timestamping del syslog (dmesg) a hora human readable en Linux

 

Lo tiro acá para toda la posteridad. Un pequeñísimo script para convertir el timestamping de syslog (la cantidad de segundos transcurridos desde que booteó el sistema) a hora local, cosa que a priori parece trivial pero que a la tercera vez que tenés que usar ya te cansa la cabeza.

 

Un poco de bash scripting. Convertir de Unix timestamping en el syslog de Linux a Hora en formato human readable.

 

Este script no es mío, lo robé de algún lado hace años y desde entonces me acompaña a todas partes:

#!/bin/bash

if [ "$#" != "1" ] ; then
echo "Usage: `basename $0` time-offset-integer"
exit 1
elif [ "`echo $1 | sed 's/[0-9]//g'`" != "" ] ; then
echo "Usage: `basename $0` time-offset-integer"
exit 1
fi

N=`date +'%s'`
U=`FS="." /usr/bin/awk '{print $1;}' < /proc/uptime | sed 's/[^0-9].*//'`
TS=`expr $N - $U + $1`
T=`date --date="@$TS"`

echo "$1 seconds after boot was about $T."

 

Como se usa.

A la típica salida del comando dmesg, o /var/log/syslog por ejemplo:

[511684.749771] Process accounting resumed
[511684.842941] systemd[1]: apt-daily-upgrade.timer: Adding 33min 25.167508s random time.
You have new mail in /var/mail/root

 

 

Ejecutás el script anterior, que en este caso llamé syslogtohuman.sh:

~# ./syslogtohuman.sh 511684
511684 seconds after boot was about Thu Aug 16 11:20:13 -03 2018.

 

Y así sabés que esa entrada en el syslog en particular aproximadamente en esa fecha y a esa hora: Thu Aug 16 11:20:13 -03 2018

 

De nada.

[TIP] Como eliminar las líneas duplicadas (o encontrar las repetidas) en dos archivos de texto diferentes usando Bash.

A este le puse por título TIP por que no es mas que eso: otro ayuda memoria para la posteridad, a saber:

 

  • Tenés dos archivos con texto: archivo1 y archivo2 como en el ejemplo de la captura de pantalla.
  • Necesitás identificar las líneas duplicadas o simplemente restarlas como en el ejemplo y mostrar únicamente las que no se repiten.

 

La única forma que conozco de lograr esto en Bash sin recurrir a complicados regex de la muerte forma mas rápida de lograr esto sin tener que pensar mucho es como tantas otras veces: GREP.  Alguien debería hacerle un pedestal al autor original de grep, sin duda.

Los switchs que vas a utilizar en grep son:

  1. -x  match únicamente si toda la línea coincide.
  2. -f  para en lugar de utilizar stdin o una palabra como argumento, usar un archivo, de a una línea por vez.
  3. -v  para reverse search, restar las líneas que coincidan en archivo2 de archivo1.

 

Utilizar grep en Bash para restar el contenido de un archivo de otro linea a linea en la consola de comando de Linux

 

Sigue leyendo

[HowTo] ShellShock – Como actualizar bash si tu Linux (Debian/Ubuntu) está medio viejito.

Es casi imposible que no te hayas enterado de esta nueva vulnerabilidad de Bash que dieron en llamar Shell Shock y lleva el CVE 6271.

En caso de que no estuvieras al corriente, como el nuevo theme que le puse al Blog tiene un CSS de mierda que nunca me molesté en corregir, tal vez no te diste cuenta pero en el párrafo de mas arriba hay dos hipervínculos que son clickeables y casi ni se nota. Ya arreglaré eso cuando se me pase lo pajero.

Como sea, si tenés ganas, leélos y parchá tu bash. Si no tenés ganas, simplemente parchá tu bash o que te rompan el culo, resumidamente esas son tus tres alternativas, por que este bug de mierda es wormable con lo que podemos esperar a corto plazo una ingente cantidad de bots tratando de hackearnos de forma automatizada (y van seis días desde el primer advisory).

 

Fuck the fucking fuckers. Yo ya parché mi Bash.

 

Si justo tenés la buena suerte de estar corriendo un Linux que recibe actualizaciones via gestor de paquetes, hacelo por ese medio. A mi me tocó tener que parchar decenas de Linux, en su mayoría Debian y derivados y encontré que no era tan fácil de hacer por que algunas versiones, sobre todo las mas viejitas ya no recibían actualizaciones. Como encontré –ya ni se donde– que alguien hizo un script para compilar bash desde los sources, le hice pequeñas modificaciones y te lo dejo acá para que lo uses si tenés que actualizar versiones de Debian o Ubuntu que ya no reciben updates via APT.

 

¿Como saber si tu Linux es vulnerable?

Ejecutá esto y si ves que dice «vulnerable», marche un parche:

~# env x='() { :;}; echo vulnerable' bash -c "echo esto es una prueba"

Sigue leyendo

[TIP] Como reutilizar los argumentos de tus comandos anteriores en bash.

Otro título sugerido: Linux me incita a la vagancia y no me importa.

Nada rompe mejor los huevos del command line lover que los paths larguísimos, los nombres de archivo inmemorizables y tener que tipearlos cada vez que hacen falta.

Tan desagradable es el asunto que bash está lleno de formas de ganar tiempo, de hacerle trampa a la vida, de autocompletar paths, nombres y comandos la mayoría de los cuales seguramente ya conocés.

Todo el mundo sabe como recuperar los últimos comandos tipeados en la consola pero no todos saben como recuperar el comando que te interesa a la velocidad de la luz (andá, leé y volvé, así sos uno de los que sabe) y probablemente casi nadie sabe como recuperar argumentos para reutilizarlos en un comando nuevo.

Y como siempre, no podría haber sido mas fácil, así que acá va, otro poco de command line ninjitsu en malditonerd.

Mas command Line Ninjitsu en Maldito Nerd

Como recuperar y reutilizar argumentos de comandos anteriores para usar en comandos nuevos:

Sigue leyendo