2012-03-30 8 views
7

Sono un po 'nuovo per Python, ma un programmatore esperto. Sto scrivendo uno script Python 2.7 che dovrebbe essere avviato da un server Linux all'avvio. Lo scopo è quello di inviare, tramite vari mezzi, notifiche (s) quando un utente si connette al server.Come posso ascoltare e segnalare connessioni server (SSH) tramite uno script Python?

Il mio problema ha a che fare con l'ascolto reale. Come posso far vedere al modulo quando un utente si connette (tramite SSH o qualsiasi altra cosa) al server? Un rapido pseudocodice:

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

vorrei includere alcuni dettagli nella notifica, come nome utente, IP, tempo di connessione, Ultimo collegamento, un messaggio simpatico connessione personalizzata, a prescindere. Anche le protezioni su come fare le cose migliori sono apprezzate, ma sono sicuro che posso capirlo altrove.

Grazie in anticipo per qualsiasi orientamento!

+0

Se il vostro obiettivo è quello di notifica (python opzionale), qualcosa di simile potrebbe essere una soluzione più veloce: http://www.tiger-computing.co.uk/get_notified_with_every_ssh_login – miku

+2

Probabilmente lo farei guardando il file di registro del server. Ottieni la maggior parte di queste informazioni nei log per impostazione predefinita. – sblom

+0

Vuoi davvero che SSH funzioni o vuoi semplicemente notificare una connessione TCP alla porta 22? –

risposta

3

Se sshd utilizza syslog, è possibile configurare syslog per inviare la funzione auth a una named pipe, quindi scrivere uno script Python per leggere la FIFO. Here's un esempio che usa bash.

Oppure, come sblom ha detto, si potrebbe tail /var/log/auth.log in uno script Python. In entrambi i casi, si dovrebbe ottenere linee come questa:

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

pam_python consente di scrivere un modulo PAM in grado di notificare i tentativi di autenticazione su qualsiasi servizio che utilizza PAM.

+0

Il mio server utilizza OpenSSH e sto esaminando alcuni tutorial su PAM e OpenSSH, ma sfortunatamente sono completamente estraneo alla tecnologia. : / –

Problemi correlati