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.

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, ...