viernes, 21 de febrero de 2014

grep y cat sobre un fichero comprimido con gzip

En relación a la entrada anterior, registro de logados mediante ssh, es posible que necesitemos hacer un grep sobre un fichero de texto plano comprimido con gzip. Hay muchos logs que van rotando y los ficheros antiguos son comprimidos automáticamente con este formato.

Por tanto, si queremos realizar un grep sobre el fichero /var/log/auth.log.2.gz ejecutaremos:

# zgrep Accepted /var/log/auth.log.2.gz

Por defecto, el comando grep colorea las palabras que encajan con el patrón buscado, pero zgrep no. Para que las coloree:

# zgrep --color Accepted /var/log/auth.log.2.gz

De la misma forma, zcat realiza un cat sobre un fichero de texto plano comprimido con gzip.

miércoles, 19 de febrero de 2014

Registro de logados mediante SSH

Es un buen hábito revisar de vez en cuando el registro de logados mediante SSH, para detectar así posibles accesos no autorizados.

La forma de obtener el registro de accesos es mediante el siguiente comando:

# grep Accepted /var/log/auth.log
Feb 18 08:20:21 myserver sshd[27373]: Accepted publickey for nagios from 192.168.44.8 port 56032 ssh2
Feb 19 10:22:52 myserver sshd[17224]: Accepted password for root from 192.168.44.2 port 55073 ssh2

Indicar que dicho fichero de registro, auth.log , va rotando por lo que es posible que haga falta revisar el fichero auth.log.1, auth.log.2.gz, ...

martes, 11 de febrero de 2014

Interpretar la salida de load average

Los valores de "load average", o de carga media del sistema, nos los tropezamos continuamente en el día a día en el terminal de Linux. Un ejemplo de ello es el resumen del sistema que se muestra al acceder vía SSH:

Welcome to Ubuntu!
 * Documentation:  https://help.ubuntu.com/

  System information as of Tue Feb 11 21:20:14 CET 2014

  System load:  0.0               Processes:           100
  Usage of /:   52.9% of 3.71GB   Users logged in:     0
  Memory usage: 27%               IP address for eth0: 192.168.1.1
  Swap usage:   3%

  Graph this data and manage this system at https://landscape.canonical.com/

O con el comando uptime:

 21:20:14 up 220 days,  5:43,  1 user,  load average: 0.00, 0.03, 0.09

O con el comando top:

top - 20:27:40 up 220 days,  5:43,  1 user,  load average: 0.00, 0.03, 0.09
Tasks: 108 total,   1 running, 107 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.4%us,  1.7%sy,  0.7%ni, 97.0%id,  0.2%wa,  0.1%hi,  0.1%si,  0.0%st
Mem:    120920k total,    81356k used,    39564k free,    16740k buffers
Swap:   238584k total,     9412k used,   229172k free,    29316k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
    1 root      20   0  2656  596  312 S  0.0  0.5  31:31.18 init
    2 root      20   0     0    0    0 S  0.0  0.0   0:00.02 kthreadd
    3 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 migration/0

Sin embargo, no todo el mundo entiende qué representan estos valores.

Básicamente representan la carga media del sistema en el último minuto, los últimos 5 minutos y los últimos 15 minutos. Un 100% de carga del sistema lo representaría el valor obtenido por:

# grep 'model name' /proc/cpuinfo | wc -l

Es decir, si tenemos un procesador con 2 núcleos, un valor de 2.0 representaría una carga del 100% del sistema.

Os recomiendo la lectura de este artículo, que explica muy bien y de manera bastante gráfica el concepto de carga del sistema.