viernes, 1 de agosto de 2014

Enlace a blog de José Linares

Hace poco descubrí un estupendo blog sobre temas relacionados a los que escribo en este blog: bash, programación de scripts, administración de sistemas... Su autor es José Linares y aquí os dejo su blog: jose-linares.com.

A disfrutarlo y aprender muchas cosas interesantes y útiles.

jueves, 24 de julio de 2014

Enviar mensajes por Hangouts desde consola

Necesitaba enviar mensajes por Hangouts desde linea de comandos, para hacerlo de manera automática con scripts. Tras probar distintas aplicaciones, algunas que funcionaban pero con un entorno interactivo con ncurses, y otras que directamente fallaban, encontré la solución. Sencilla y elegante:


1. Instalar la librería XMPP para Python:

# aptitude install python-xmpp

2. Crear el script Python que enviará los Hangout. Llamémoslo sendHangouts.py:

#!/usr/bin/python
# -*- coding: latin-1 -*-

# 1er parametro: cuenta del destinatario
# 2o parametro: mensaje a enviar

import sys, xmpp

jid = xmpp.protocol.JID('cuenta.desde.la.que.envio.el.hangout@gmail.com')
cl=xmpp.Client(jid.getDomain(),debug=[])
cl.connect()
cl.auth(jid.getNode(),'contraseña.de.la.cuenta')
cl.send(xmpp.protocol.Message(sys.argv[1],sys.argv[2], typ='chat'))

3. Asignar permisos de ejecución al script:

# chmod +x sendHangouts.py


4. Para que cuenta.desde.la.que.envio.el.hangout@gmail.com pueda mandar un hangouts a mi.cuenta.destinataria@gmail.com, el emisor tendrá que tener al destinatario en su agenda de contactos. Valdría con que cuenta.desde.la.que.envio.el.hangout@gmail.com enviase un email a mi.cuenta.destinataria@gmail.com.

5. Y listo para enviar mensajes:

# ./sendHangouts.py mi.cuenta.destinataria@gmail.com Hola
# ./sendHangouts.py mi.cuenta.destinataria@gmail.com "Alarma crítica en servidor de base de datos"

6. A inventar posibles usos.

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.