Grabación de sesiones de consola

No fui el primero, ni seré el último en preguntarse cómo grabar todo lo que estás haciendo en la consola de tu equipo Linux, par a continuación poder dejarlo a libre disposición.
hasta que conocí el software del que os voy a hablar hoy, la forma que tenía de hacerlo no era más que la de grabar toda la pantalla (o una región) y dejar luego el vídeo, por ejemplo en Youtube.
Pues bien, ahora ya no podrás decir que no conoces ttyrec, con el que podrás grabar todo el comportamiento de tu consola de una forma más limpia y rápida.

Instalación

ttyrec está disponible en prácticamente todos los repositorios oficiales de las principales distribuciones, así que para instalarlo,
shell> apt-get install ttyrec

Grabar

Comenzar una nueva sesión o grabación es muy sencillo. Únicamente tendremos que saber el nombre que le vamos a querer dar y a continuación,
shell> ttyrec -a git_usage.tty
Para pararla, emplearemos Control + c.

Reproducir

Una vez tengamos la grabación finalizada, tendremos un fichero que podemos reproducir las veces que queramos, únicamente tendremos que tener instalado ttyplay, que viene con el paquete ttyrec.
shell> ttyplay git_usage.tty
Por suerte, este tipo de ficheros, al almacenar texto plano ocupan muy poco, por lo que pasárselos a alguien es sencillo y no debería de darnos problema. De todas formas existen webs, como playterm.org que nos permiten subir el fichero e incrustarlo en una web o dejarlo público.

Referencias

Leer más

Preguntando a servidores NTP

NTP es el protocolo de red empleado para la sincronización horaria. Eso significa que gracias a él, todos los equipos conectados a Internet (Windows, Linux, MacOX, router's, etc.) pueden tener la misma hora en todo momento. Aunque a nivel de usuario tener un desfase de dos minutos pueda no ser un problema, a nivel de servidores sí lo puede ser. Ahí la importancia de NTP.
Para GNU/Linux, existen paquetes y daemons que se encargan de realizar dicha sincronización horaria, como son ntp o ntpdate. Y estos puede trabajar de forma automática o manual. La mejor opción, es sin duda la primer, puesto que así el equipo sincronizará cuando él crea oportuno la hora y la mantendrá sincronizada en todo momento.
En caso de que deseemos ejecutarlo de forma manual, esto se puede realizar tal que así,
shell> ntpdate 0.debian.pool.ntp.org
13 Apr 21:52:52 ntpdate[6240]: adjust time server 217.130.246.182 offset -0.003814 sec
NTP también incluye una serie de comandos más especializados y que permiten consultar diferentes parámetros al servidor de sincronización para comprobar el estado del mismo. A continuación, vamos a detallar los más interesantes.
  • Servidores conocidos de uno dado
    shell> ntpq -p 0.debian.pool.ntp.org
    remote             refid          st   t  when   poll reach    delay   offset  jitter
    =====================================================================================
    *hora.rediris.es   .GPS.           1   u   329   1024   373   18.034   -3.620   0.039
    +hora.roa.es       .GPS.           1   u   358   1024   377   48.219   -0.635   1.447
    -time.euro.apple   17.72.133.54    2   u   261   1024   333   65.669   -7.850   0.611
    -gong.ci.uv.es     147.156.1.135   2   u   273   1024   377   19.429   -4.927   0.489
    +sigrid.fi.upm.e   138.100.8.3     2   u   281   1024   333   19.523   -3.134   0.419
    
    shell> ntpdc -c dmpeers 0.debian.pool.ntp.org
    remote             local           st   poll reach     delay      offset      disp
    ==================================================================================
    alarich.online-    138.100.11.74   13   1024   377   0.05843   -0.002360   0.12178
    .clock.via.net     138.100.11.74    1   1024   377   0.17661   -0.000670   0.12183
    ntp1.inrim.it      138.100.11.74    1   1024    40   0.03572   -0.000021   2.82416
    .hora.rediris.es   138.100.11.74    1   1024   377   0.00192   -0.000933   0.13663
    hora.roa.es        138.100.11.74    1   1024   377   0.01936   -0.002820   0.13661
    *time.nist.gov     138.100.11.74    1   1024   377   0.16463    0.000173   0.12178
    ntp.nic.cz         138.100.11.74    2   1024   377   0.03534   -0.001691   0.12175
    
  • Información del daemon
    shell> ntpdc -c loopinfo hora.rediris.es
    offset:               -0.120317 s
    frequency:            21.885 ppm
    poll adjust:          -30
    watchdog timer:       24 s
    
  • Márgenes de fallo de los servidores
    shell> ntpdc -c kerninfo hora.rediris.es
    pll offset:           -2.46e-07 s
    pll frequency:        21.953 ppm
    maximum error:        0.121131 s
    estimated error:      2.7e-05 s
    status:               2107  pll ppsfreq ppstime ppssignal nano
    pll time constant:    4
    precision:            8.56e-07 s
    frequency tolerance:  496 ppm
    pps frequency:        21.953 ppm
    pps stability:        0.123 ppm
    pps jitter:           1.159e-06 s
    calibration interval: 16 s
    calibration cycles:   4135711
    jitter exceeded:      432403
    stability exceeded:   74355
    calibration errors:   26
    
Leer más

Opciones de privacidad en Firefox

Hoy os quiero enseñar unos pequeños trucos para Firefox que nos permitirán gestionar un poco mejor nuestra privacidad en Internet. Aunque vas a dejar rastro por donde pases, cuanto menos dejes mejor. Si eres usuario de Firefox esta es tu entrada y si conoces a alguien que lo sea, comparte la entrada.
Por supuesto, todo lo que vamos a ver se gestiona desde las variables de configuración, y para acceder a ellas nada mejor que visitar about:config. Aparecerá un aviso como el que sigue, pero no os asustéis, no sois manazas ;-)
Cuando hayáis accedido, tener presente que vamos a hablar mucho acerca de variables, por lo que fijaros que en la parte de arriba hay un buscador que os simplificará la vida. Así que vamos a ello.
  • Desactivar restauración de sesión
    Una de las cosas más peligrosas que tiene el navegador es que está guardando la sesión cada 10 segundos aproximadamente. Aparte de la carga de I/O que supone, también implica que en caso de que el ordenador se reinicie y no seas tú el que vuelva a abrir el navegador, éste restaurará tu sesión, pestañas, cookies, etc.
    Puesto que no nos interesa que nadie sepa dónde anduvimos navegando ni entre en nuestro correo, lo desactivamos estableciendo a false la variable
    browser.sessionstore.resume_from_crash
  • Eliminar useragent
    Todos los navegadores dejan una huella en todos los servidores identificándose y dando información que no tienen por qué dejar. Para evitarlo, editamos (o creamos la variable)
    general.useragent.override
    
    Y establecemos el valor que más nos guste para dejar nuestra "huella" en la web.
  • Desactivar autocompletado de URLs
    No queremos que el navegador nos ayude a "recordar" las páginas que hemos visitado, por razones obvias de privacidad, así que desactivamos (valor false) el autocompletado de URLs.
    browser.urlbar.autofill
    browser.urlbar.autofill.typed
    
  • Desactivar autocompletado de búsquedas
    Cuando buscamos, todo esto se queda almacenado en el navegador y cuando comenzamos a escribir una nueva búsqueda no autocompleta con cosas que ya hemos buscado. Puesto que no nos interesa que nadie sepa lo que buscamos, establecemos el valor -1 a la variable,
    browser.urlbar.maxRichResults
    
Leer más

PHP-FPM en socket y no TCP

Con la cada vez más rápida implantación y adaptación de php-fpm como servidor de compilación para ficheros tipo PHP, se abre un amplio abanico de posibilidades a la hora de trabajar y escalar sistemas web. En típico sistema Nginx + PHP, todo en la misma máquina ya queda obsoleto y ahora podemos pasar a un sistema con cada uno de los componentes separados en distintas máquinas y por lo tanto escalables. Esto quedará para otra entrada...
Hoy vamos a ver cómo crear una configuración de php-fpm por un socket unix tradicional y no desde una conexión TCP, como suele aparecer en casi todos los lugares. Las ventajas de emplear el socket y no TCP es que trabajando a nivel de localhost no es necesario y nos evitamos la carga innecesaria de la creación de las nuevas conexiones cada vez que se compila un código PHP. Mejoramos en rendimiento y también en seguridad, pues no hay ningún servicio ni ningún puerto abierto, aunque sea a localhost.
Para hacer este cambio y por lo tanto aprovechar esta mejora de rendimiento, podemos hacer lo siguiente,
  1. Editar /etc/php5/fpm/php-fpm.conf y aplicar el siguiente cambio,
    - listen = 127.0.0.1:9000
    + listen = /var/run/php5-fpm.sock
    
  2. Editar el fichero del virtualhost /etc/nginx/conf.d/domain.conf y aplicar el siguiente cambio,
    -fastcgi_pass   127.0.0.1:9000;
    +fastcgi_pass   unix:/var/run/php5-fpm.sock;
    
  3. Reiniciar servicios
    shell> service php-fpm restart
    shell> service nginx restart
Leer más

Red Hat, instalar versión de un paquete

Hoy toca enseñar un pequeño truco acerca de cómo instalar una versión concreta de un paquete en sistemas Red Hat. En la mayoría de los repositorios, los mantenedores van sacando nuevas versiones y aunque puede resultar muy útil tener siempre la última versión instalada (seguridad, estabilidad, etc.) puede darse el caso de que necesites una versión concreta de un paquete para una determinada prueba. En este caso, la forma de instalarlo ya no es la de siempre,
shell> yum install openssh-server
Sino que hay que saber qué versión del paquete necesitas instalar y pasársela al instalador.
Para empezar, vamos a ver el listado de paquetes disponibles en el repositorio y con su correspondiente versión.
shell> yum --showduplicates list openssh-server
Paquetes disponibles
openssh-server.x86_64   5.3p1-104.el6       base
openssh-server.x86_64   5.3p1-104.el6_6.1   updates
Y de ahí, podemos optar por instalar el paquete que deseemos, tal que así
shell> yum install package-version
Que traducido a un caso concreto, quedaría,
shell> yum install openssh-server-5.3p1-104.el6
Espero que os haya sido de ayuda.
Leer más

Link vmlinuz.old is damaged

Pues bien, hoy es uno de esos días en los que te pones a actualizar un equipo y te das cuenta de que queda poco espacio en la partición raíz. Investigando un poco más, observas que hay muchas versiones del kernel instaladas, pero que en realidad no se están empleando para nada, por lo que decides hacer limpieza. Concretamente, éste es el caso,

shell> dpkg -l |grep linux-image
ii linux-image-3.2.0-29-generic 3.2.0-29.46  Linux kernel...
ii linux-image-3.2.0-60-generic 3.2.0-60.91  Linux kernel...
ii linux-image-3.2.0-68-generic 3.2.0-68.102 Linux kernel...
ii linux-image-3.2.0-69-generic 3.2.0-69.103 Linux kernel...
ii linux-image-3.2.0-70-generic 3.2.0-70.105 Linux kernel...
ii linux-image-3.2.0-74-generic 3.2.0-74.109 Linux kernel...
ii linux-image-3.2.0-75-generic 3.2.0-75.110 Linux kernel...
ii linux-image-3.2.0-77-generic 3.2.0-77.114 Linux kernel...
ii linux-image-3.2.0-79-generic 3.2.0-79.115 Linux kernel...
ii linux-image-generic          3.2.0.79.93  Generic Linux
Como veis, hay algunas versiones del kernel instaladas, y que en realidad no son necesarias, así que vamos a realizar una purga de aquellas que no nos interesen. Lo primero es saber qué versión del mismo estamos usando, no vayamos a desinstalar el kernel que estamos empleando. Para ello,
shell> uname -r
3.2.0-75-generic
No está cargada la última versión y siendo un equipo de producción, reiniciar "por que sí", tampoco es posible, así que vamos a purgar aquellos que no nos interesan, es decir, todos menos la última versión (3.2.0-79) y la que estamos usando (3.2.0-75).
shell> apt-get remove --purge linux-image-3.2.0-29-generic
shell> apt-get remove --purge linux-image-3.2.0-60-generic
shell> apt-get remove --purge linux-image-3.2.0-68-generic
shell> apt-get remove --purge linux-image-3.2.0-69-generic
shell> apt-get remove --purge linux-image-3.2.0-70-generic
shell> apt-get remove --purge linux-image-3.2.0-74-generic
shell> apt-get remove --purge linux-image-3.2.0-77-generic
Y tras ello,
shell> apt-get autoremove --purge
Durante la desinstalación del kernel 3.2.0-77 ha aparecido un curioso error,
shell> apt-get remove --purge linux-image-3.2.0-77-generic
Desinstalando linux-image-3.2.0-77-generic ...
...
The link /vmlinuz.old is a damaged link
Removing symbolic link vmlinuz.old 
 you may need to re-run your boot loader[grub]
Purgando ficheros de configuración de linux-image-3.2.0-77...
...
Donde se nos está indicando que el link al fichero /vmlinuz.old está dañado y que no va a funcionar. Para corregirlo, simplemente debemos de recargar nuestro gestor de carga (en mi caso grub), tal como sigue.
shell> update-grub
Y problema solventado.
Leer más

Formulario de contacto

Nombre

Correo electrónico *

Mensaje *

Últimos comentarios