Hey zusammen.
Ich habe mir hier ein kleines Script geschrieben welches mich per Telegram- oder LINE-Messenger benachrichtigt wenn neue Updates vorhanden sind. Dieses möchte ich hier gerne zur Verfügung stellen falls andere mal danach suchen.
In der reflist.txt kann man selber Paketnamen eintragen bei welchen man speziell benachrichtigt werden will. Sie kann aber auch leer bleiben. Eine Benachrichtigung geht auch nur dann raus wenn neue Updates vorhanden sind. Sind die Updates identisch zum letzten Run wird keine Benachrichtigung rausgeschickt.
Line-Bot erstellen: https://support.messagebird.com/hc/en-us/articles/209600005-How-to-add-a-LINE-Bot-to-the-Chat-API
Telegram-Bot erstellen: https://core.telegram.org/bots#6-botfather
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | #!/bin/bash #Messenger festlegen ( leer = Telegram / 1 = LINE ) readonly SELECT= #Bot-ID's und Token hier eintragen readonly BOT_TOKEN='' #Für Benachrichtigung mit Telegram readonly CHAT_ID='' #Für Benachrichtigung mit Telegram readonly ACCESS_TOKEN='' #Für Benachrichtigung mit LINE #Zu sendende Nachricht function msg_create { if [ $flagname == ]; then flagname=N/A fi MESSAGE="Es sind $anzahl Updates verfügbar! Flags: $flags - [$flagname]" } #Setze Konstanten readonly UDLIST=/var/tmp/udlist.tmp readonly UDLAST=/var/tmp/udlast.tmp readonly REFLIST=$HOME/Documents/reflist.txt readonly LOGFILE=$HOME/update.log readonly MAXLINES=20 readonly TELEURL='https://api.telegram.org/bot' readonly LINEURL='https://notify-api.line.me/api/notify' # Falls nicht vorhanden, erstelle benötigte Dateien. touch $UDLAST $LOGFILE $REFLIST #Logfilefunktion mit Zeilenbeschränkung function logsetup { TMP=$(tail -n $MAXLINES $LOGFILE 2>/dev/null) && echo "${TMP}" > $LOGFILE exec > >(tee -a $LOGFILE) exec 2>&1 } function log { echo "$(date +"%d.%m.%Y - %H:%M:%S"): $*" } # Vergleiche verfügbare Updates mit Referenzliste und gleiche mit letztem Run ab. anzahl=$(aptitude search '~U' | wc -l) if (( $anzahl != 0 )); then aptitude search '~U' -F%p >> $UDLIST newupdates=$(grep -Fxv -f $UDLAST $UDLIST | wc -l) if (( $newupdates != 0 )); then flags=$(grep -f $REFLIST $UDLIST | wc -l) flagname=$(grep -f $REFLIST $UDLIST) msg_create if [ $SELECT == ]; then curl -s -k "$TELEURL$BOT_TOKEN/sendMessage" -d text="$MESSAGE" -d chat_id=$CHAT_ID else curl -X POST -H 'Authorization: Bearer $ACCESS_TOKEN' -F 'message=$MESSAGE' $LINEURL fi logsetup log Updates: $anzahl Flags: $flags - [$flagname] fi fi # Ersetze Log des letzten Runs mit dem aktuellen Log. rm $UDLAST mv $UDLIST $UDLAST exit 0 |
Das Script kann dann beispielsweise alle 24h mittels crontab ausgeführt werden. Getestet habe ich es unter Raspbian Stretch und Xubuntu 17.10
Hier noch ein Danke an die Community von https://forum-raspberrypi.de für die Hilfe.
Anregungen und Optimierungsvorschläge sind immer willkommen.
Grüsse Apop.
Moderiert von sebix:
Keine Frage erkennbar. Thema in einen passenden Forenbereich verschoben. Bitte beachte die als wichtig markierten Themen („Welche Themen gehören hier her und welche nicht?“) in jedem Forenbereich. Danke.