2012-03-30 5 views
7

Soy un poco nuevo en Python, pero soy un programador experimentado. Estoy escribiendo un script de Python 2.7 que debe ser iniciado por un servidor Linux al arrancar. El objetivo es enviar, a través de varios medios, notificación (es) cuando un usuario se conecta al servidor.¿Cómo puedo escuchar e informar las conexiones del servidor (SSH) a través de un script de Python?

Mi problema tiene que ver con la escucha real. ¿Cómo puedo hacer que el módulo vea cuando un usuario se conecta (a través de SSH, o lo que sea) al servidor? Algunos pseudocódigo rápida:

# When a connection is made 
    # Send an email 
    # Send a text message 
    # Send notification to server output 
    # Etc... 

me gustaría incluir algunos detalles en la notificación, como nombre de usuario, IP, tiempo de conexión, la última conexión, un mensaje lindo conexión personalizada, lo que sea. También se agradece cualquier protuberancia sobre cómo hacer esas cosas mejor, pero estoy seguro de que puedo resolver esto en otro lugar.

¡Gracias de antemano por cualquier orientación!

+0

Si su objetivo es la notificación (pitón opcional), algo como esto podría ser una solución más rápida: http://www.tiger-computing.co.uk/get_notified_with_every_ssh_login – miku

+2

Probablemente lo haga mirando el archivo de registro del servidor. Obtienes la mayor parte de esa información en los registros de forma predeterminada. – sblom

+0

¿Realmente desea que SSH funcione o simplemente desea notificar acerca de una conexión TCP al puerto 22? –

Respuesta

3

Si su sshd usa syslog, puede configurar syslog para enviar la instalación de autenticación a un conducto con nombre, luego escribir un script de Python para leer el FIFO. Here's un ejemplo que usa bash.

O, como dijo sblom, puede alinear /var/log/auth.log en una secuencia de comandos de Python. De cualquier manera, usted debe conseguir líneas de la siguiente manera:

Mar 29 19:58:13 mybox sshd[13914]: Accepted password for jtg from 192.168.0.20 port 51538 ssh2 
2

pam_python le permitirá escribir un módulo PAM que pueda notificar intentos de autenticación en cualquier servicio que utilice PAM.

+0

Mi servidor usa OpenSSH, y estoy buscando información sobre PAM y OpenSSH, pero desafortunadamente no estoy completamente familiarizado con la tecnología. : / –

Cuestiones relacionadas