Mit einem Client Script kann man sich informieren lassen, wenn sich jemand am Linux Server anmeldet.
Ich benutze Telegram nur für diesen Zweck, aber dafür finde ich es ungemein nützlich. Man bekommt eine Alarmierung, wenn sich jemand am Server anmeldet. Das ist noch dazu relativ simpel zu installieren.
Vorbereitung
Ihr benötigt die Telegram App auf eurem Handy und ich melde mir auch immer gleich das Webinterface an. Für die Anmeldung am Webinterface, geht ihr auf die Webseite und scant den QR Code am Handy ein. Die URL lautet https://web.telegram.org/k/ . Den QR Code könnt ihr in der Signal App unter Settings -> Devices einscannen.
Unter Kontakte sucht ihr nun @Botfather und gebt dann folgende Befehle ein:
Wichtig ist, dass ihr euch den im Screenshot nicht dargestellten HTTP API Code speichert. Den werden wir gleich noch gebrauchen.
Telegram Channel anlegen
Wir legen nun im vorher verbundenen Webinterace oder in der App auf dem “Handy” einen neuen Channel an.
Nun muss der Bot als Admin zum Channel hinzugefügt werden. Das ging bei mir nur über App auf dem Handy. Und fügen beim anlegen gleich den vorher angelegten Bot zum Channel hinzu.
Nun brauchen wir neben der HTTP API noch die Channel ID. Dazu einfach eine Testnachricht im Channel erstellen und auf diese Webseite gehen: https://api.telegram.org/bot<HTTP API Token>/GetUpdates
Eine zweite Nachricht im Channel geschickt und den Refresh Button auf der Webseite gedrückt und da kam die passende Antwort:
{"ok":true,"result":[{"update_id":796210855, "channel_post":{"message_id":5,"sender_chat":{"id":-1001853930143,"title":"Blogging_Brother","type":"channel"},"chat":{"id":-1001853930143,"title":"Blogging_Brother","type":"channel"},"date":1678907392,"text":"Test Nummer 2"}}]}
Wir brauchen aus diesem Text die Channel ID und diese versteckt sich hier “id”:-1001853930143.
Versenden der ersten Nachricht
Vom Linux Host könnt ihr nun den ersten Test mit einem Befehl durchführen
curl 'https://api.telegram.org/bot<YourBOTToken>/sendMessage?chat_id=<channel_id>&text=<text>'
Ihr müsst also wieder bot<BotToken> austauschen und die oben gesammelte ID bei <channel_id> eingeben und einen “Testtext”.
Da ich da auch gerne dran verzweifle, ein paar Hinweise. Die Chat mit Vorzeichen und die erste Testnachricht ohne Leerzeichen. Sieht bei mir dann so aus (bewußt sind da ein paar Zeichen verwechselt worden bei Chat ID und Token).
curl 'https://api.telegram.org/bot6196503457:AAMLRx8jWodQITvcAb8MX18P8Y2UEcCZBk/sendMessage?chat_id=-100158973930&text=ersterVersuch'
Der Output sollte dann in etwas so auf dem Linux Server aussehen:
Wir legen nun unter /usr/bin/folder uns eine Skriptdatei an, damit wir einfacher den Text versenden können.
touch /usr/bin/telegram-send.sh
sudo nano /usr/bin/telegram-send.sh
Nun legen wir das Skript an:
#!/bin/bash
GROUP_ID=<group_id>
BOT_TOKEN=<bot_token>
# this 3 checks (if) are not necessary but should be convenient
if [ "$1" == "-h" ]; then
echo "Usage: `basename $0` \"text message\""
exit 0
fi
if [ -z "$1" ]
then
echo "Add message text as second arguments"
exit 0
fi
if [ "$#" -ne 1 ]; then
echo "You can pass only one argument. For string with spaces put it on quotes"
exit 0
fi
curl -s --data "text=$1" --data "chat_id=$GROUP_ID" 'https://api.telegram.org/bot'$BOT_TOKEN'/sendMessage' > /dev/null
Wieder müsst ihr hier eure Chat ID und den Token eingeben. Das sollte man auf produktiven Systemen nicht tun, aber für meinen persönlichen Gebrauch und Spass am ausprobieren, genügt das für diese Dokumentation.
Nun muss die Datei noch ausführbar gemacht werden. Das geht mit chmod.
sudo chmod +x /usr/bin/telegram-send.sh
sudo chown root:root /usr/bin/telegram-send
.sh
Nun könnt ihr die Datei jederzeit mit dem gewünschten Text ausführen. Bei mehreren Worten benutzt immer “”.
Versenden einer Telegram Nachricht bei Login
Alle Dateien mit einer .sh Dateiendung im Ordner /etc/profile.d/ werden bei einer Anmeldung am System ausgeführt.
Wir legen uns also eine passende Datei an und öffnen diese im Texteditor.
touch /etc/profile.d/login.notify.sh
sudo nano /etc/profile.d/login.notify.sh
Dann fügen wir folgenden Text ein
#!/bin/bash
# Variablen setzen für die spätere Nachricht
login_ip="$(echo $SSH_CONNECTION | cut -d " " -f 1)"
login_date="$(date +"%e %b %Y, %a %r")"
login_name="$(whoami)"
# Nachricht versenden und $'\n' benutzen um jeweils eine neue Zeile in telegram zu erstellen
message="Neue Anmeldung am Server"$'\n'"$login_name"$'\n'"$login_ip"$'\n'"$login_date"
#send it to telegram
telegram-send.sh "$message"
Danach trennen wir die Verbindung zum Linux Server und melden uns wieder an. Wir erhalten sofort folgende Meldung.
Der Dank für diese einfache und simple Lösung geht an Konstantin Bogomolov . Er hat die Lösung hier beschrieben. Ich habe mir nur die Mühe gemacht es für meinen Valheim / Satisfactory Server zu testen, zu dokumentieren und in Deutsch zu übersetzen. Wie man mit AMP einen Valheim / Satisfactory Server aufsetzen und absichert, dass könnt ihr hier von Anfang an lesen.