2012-03-30 5 views
7

Jestem trochę nowych do Python, ale doświadczony programista. Piszę skrypt Python 2.7, który powinien być uruchamiany przez serwer Linux przy starcie. Celem jest wysyłanie, za pośrednictwem różnych nośników, powiadomień, gdy użytkownik łączy się z serwerem.Jak mogę odsłuchiwać i raportować połączenia serwera (SSH) za pomocą skryptu Python?

Mój problem ma do czynienia z rzeczywistą słuchania. Jak mogę sprawić, by moduł zobaczył, kiedy użytkownik łączy się (przez SSH lub cokolwiek innego) z serwerem? Niektóre szybkie pseudokod:

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

Chciałbym zawierać dane w zgłoszeniu, jak nazwa użytkownika, IP, czas połączenia, ostatniego połączenia, cute niestandardowego wiadomości połączenia, cokolwiek. Wszelkie apele o tym, jak robić to najlepiej, są również doceniane, ale jestem pewien, że mogę to zrozumieć gdzie indziej.

Dzięki z góry za wszelkie wskazówki!

+0

Jeśli twoim celem jest powiadomienie (python opcjonalnie), coś w tym może być szybsze rozwiązanie: http://www.tiger-computing.co.uk/get_notified_with_every_ssh_login – miku

+2

Prawdopodobnie zrobię to, oglądając plik dziennika serwera. Domyślnie większość tych informacji znajduje się w dziennikach. – sblom

+0

Czy rzeczywiście chcesz SSH do pracy, czy po prostu chcesz powiadomić o połączenia TCP na porcie 22? –

Odpowiedz

3

Jeśli sshd jest za pomocą syslog, można skonfigurować syslog, aby wysłać siłownia auth do nazwanego potoku, a następnie napisać skrypt Pythona do odczytu FIFO. Here's przykład używający bash.

Lub, jak powiedział sblom, możesz ograć /var/log/auth.log w skrypcie Pythona. Tak czy inaczej, należy uzyskać linie tak:

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

pam_python pozwoli Ci napisać moduł PAM, który może powiadomić prób uwierzytelniania na wszystkie usługi korzystające z PAM.

+0

Mój serwer korzysta z OpenSSH i szukam informacji o PAM i OpenSSH, ale niestety nie jestem całkowicie zaznajomiony z tą technologią. : / –

Powiązane problemy