Dostałem dziś od znajomego zapytanie o najprostszy sposób na wysłanie powiadomienia na adres e-mail o logowaniu się do serwera za pośrednictwem konsoli.
Może komuś się przyda, więc…
Spis treści w artykule
E-mail o (za)logowaniu się użytkownika do serwera (SSH)
Podejrzewam, że większość z Was ma przynajmniej 2 użytkowników: „root” i jakiś inny, własny.
Zakładam też, że macie na swoim serwerze skonfigurowane wysyłanie poczty e-mail (własny serwer pocztowy, lub np. MSMTP).
Użytkownik „root”
Pewnie jest duża szansa, że niektórzy z Was mają zablokowane zdalne logowanie jako „root” – więc mogłoby się wydawać że, nie ma potrzeby ustawiać powiadomienia dla tego użytkownika, ale:
- Zawsze możecie kiedyś włączyć, więc lepiej przyszłościowo…
- Może jednak macie włączone zdalne logowanie jako „root”
- Zostaje jeszcze konsola dostępna z panelu zarządzania serwerem (VPS), za pośrednictwem której „root” może się „zdalnie” (no, prawie zdalnie) zalogować
Konfiguracja
Edytujemy plik:
sudo nano /root/.bashrc
I gdzieś na końcu dodajemy:
# E-mail po zalogowaniu
echo `hostname` `date` `who | grep "root"` | mail -s "Root login `hostname`" [email protected]
Lub w przypadku gdy nie korzystacie (lub nie macie zainstalowanego w systemie) polecenia „mail”, bezpośrednio wywołanie aplikacji MSMTP:
TEMAT="Root login "$(hostname)
TRESC=$(echo `hostname` `date` `who | grep "root"`)
echo -e "Subject: "$TEMAT"\r\n\r\n"$TRESC | msmtp --from=profil-domyślny -t [email protected]
Pozostali użytkownicy
Możemy też takie powiadomienie ustawić dla innych użytkowników, zmienia się tylko trochę ścieżka do pliku:
sudo nano /home/[NAZWA_UŻYTKOWNIKA]/.bashrc
Oraz komenda:
# E-mail po zalogowaniu
echo `hostname` `date` `who | grep "[NAZWA UŻYTKOWNIKA]"` | mail -s "[NAZWA UŻYTKOWNIKA] login `hostname`" [email protected]
Lub w przypadku gdy nie korzystacie (lub nie macie zainstalowanego w systemie) polecenia „mail”, bezpośrednio wywołanie aplikacji MSMTP:
TEMAT="[NAZWA_UŻYTKOWNIKA] login "$(hostname)
TRESC=$(echo `hostname` `date` `who | grep "root"`)
echo -e "Subject: "$TEMAT"\r\n\r\n"$TRESC | msmtp --from=profil-domyślny -t [email protected]
Przykładowy alert/e-mail
Od teraz po zalogowaniu się wybranego użytkownika powinniśmy otrzymać e-mail:
Temat: [NAZWA UŻYTKOWNIKA] login [NAZWA SERWERA]
[NAZWA SERWERA] wto, 15 kwi 2014, 10:33:36 CEST root pts/1 2014-04-15 10:33 [HOST/IP]
Pamiętajcie by zamiast „[email protected]” wpisać swój adres e-mail. I, że jest to relatywnie najprostsza wersja, można go jeszcze rozbudowywać. – ale to już raczej zbyteczne bajery… ;-)
![(!) Zgłoś błąd na stronie](https://webinsider.pl/wp-content/uploads/2019/12/webinsider_zglos-blad-na-stronie_200x29_888888.png)
![Pomogłem? To może postawisz mi wirtualną kawę?](https://webinsider.pl/wp-content/uploads/2025/12/pomogle-postaw-mi-wirtualna-kawe-202308-6f4e37.png)
- Zakupy w sklepie Bambu Lab bez podatku VAT, czyli rejestracja jako B2B oraz specjalny link do specjalnego sklepu - 1970-01-01
- W Home Assistant 2024.7 w końcu można bezpośrednio z właściwości danego elementu zarządzać jego rozmiarem w cały jeszcze czas eksperymentalnym układzie „sekcje” - 1970-01-01
- Sprzedajesz drona DJI? Usuń go ze swojego konta. Kupujesz używanego drona DJI? Zadbaj, by dotychczasowy właściciel usunął go ze swojego konta! - 1970-01-01