avatar_Daemon

Benachrichtigung über Updates

Begonnen von Daemon, 31. Januar 2018, 00:46:29

« vorheriges - nächstes »

0 Mitglieder und 1 Gast betrachten dieses Thema.

Daemon

Hallo!

Da mir gerade etwas langweilig war, und auch aus ein wenig Faulheit immer selbst nachzusehen, habe ich mir ein wirklich kleines Script gebastelt, welches mir anzeigt ob und wie viele Updates es gibt.
Das Script funktioniert so nur unter Arch und Arch basierenden Systemen!
Wer eine andere Distribution nutzt muss mal schauen was man da anstelle benutzen kann, da ich das checkupdates+aur(=pacman interne checkupdates + checkupdates-aur) aus dem AUR benutze. Zudem benutze ich, weil KDE User, kdialog anstatt notify-send.

Hier ist erstmal das Skript, als Kommentar schreibe ich noch das entsprechende Äquivalent für GTK dazu:
number=$(checkupdates+aur | wc -l)
#number =$(apt-get upgrade -> n)  für Debian basierte Distros (steht so im Arch Wiki https://wiki.archlinux.org/index.php/Pacman/Rosetta) 

if [ "$number" = 0 ]; then
    export DISPLAY=:0 && kdialog --title "Update Benachrichtigung" --passivepopup "Es sind 0 Updates vorhanden" --icon dialog-error 5 #5 Sekunden wird es angezeigt
    #export DISPLAY=:0 && notify-send "Update Benachrichtigung" "Es sind 0 Updates vorhanden" --icon dialog-error -t 5000 #hier sind es 5000, da mit ms gerechnet wird
else
    export DISPLAY=:0 && kdialog --title "Update Benachrichtigung" --passivepopup "Es sind $number Updates vorhanden" --icon dialog-ok 5
    #export DISPLAY=:0 && notify-send "Update Benachrichtigung" "Es sind $number Updates vorhanden" --icon dialog-error -t 5000
fi


Das Skript ausführbar machen nicht vergessen.  :)
Ich habe es bei mir nach /etc/cron.hourly kopiert, so dass ich jede Stunde eine Benachrichtigung bekomme. Punkte im Dateinamen dürfen nicht vorkommen, sonst werden diese nicht ausgeführt. Also z.B. checkupdates.sh geht nicht. Die Dateierweiterung braucht man ja eh nicht, also falls nicht eh schon gemacht, Dateiname ändern in checkupdate (oder was auch immer ihr wollt).
Alternativ die Datei in ein Verzeichnis eurer Wahl legen, und mit
crontab -e

alles manuell eintragen. Bei mir sieht es dann so aus:
0 * * * *       /Pfad/zur/Datei/updates

Bedeutet hier, immer zur Minute 0, jeder Stunde, jeden Tag (vom Monat), jeden Monat, jeden Tag (der Woche). Kurz und knapp: zu jeder vollen Stunde.
Will man z.B. alle zwei Stunden und 20 Minuten nach ausführen, sieht es so aus:
20 */2 * * *

Wer ganz wilde Sachen möchte, kann auch hier mal schauen crontab.guru - the cron schedule expression editor (Link ist ursprünglich von gosia).

Mit kdialog kann man sich mit folgendem Befehl alle Icons anzeigen lassen, wie es mit GTK geht weiß ich nicht, kann ja jemand der es weiß nachtragen.
kdialog --geticon all all


Falls jemand Fehler findet oder einen Verbesserungsvorschlag hat, immer her damit.
I'm worse at what I do best and for this gift I feel blessed

gosia

Hallo Daemon,
zuerst mal Danke für das Skript, sowas ist bei mir (und hoffentlich nicht nur bei mir) immer gern gesehen.
Zitat von: Daemon am 31. Januar 2018, 00:46:29
Falls jemand Fehler findet oder einen Verbesserungsvorschlag hat, immer her damit.
Ok, dann mal los:
Ich habe checkupdates, spielt aber wohl keine Rolle.
Mir scheint der Test auf $number == 0 oder $number != 0
if [ "$number" = 0 ]; then

unnötig zu sein. Die beiden Textblöcke sind ja wohl identisch, nur daß Du bei $number == 0 die Null sozusagen "von Hand" in den Infotext setzt. Ginge mit normaler Ersetzung aber auch
export DISPLAY=:0 && kdialog --title "Update Benachrichtigung" --passivepopup "Es sind $number Updates vorhanden" --icon dialog-ok 5

Ich habe kein kdialog und habe das mal verkürzt (export DISPLAY für den Test weggelassen) mit zenity nachgebaut:
#!/bin/sh
number=$(checkupdates | wc -l)
zenity --info --title "Update Benachrichtigung" --text "Es sind $number Updates vorhanden"

gibt dann sowas

  Guests are not allowed to view images in posts, please
Register or Login


für ganz Vorsichtige wie mich könnte man noch einen Test einbauen, ob eine Verbindung zu den Repos steht (mit entsprechender Warnung), das ist dann aber schon fast Spielerei.

Viele Grüße gosia

Daemon

Hallo gosia,

identisch sind die Ausgaben nicht, deswegen ist die Abfrage auf 0 auch nicht unnötig.  ;) Eventuell den Unterschied übersehen?
Klar, könnte anstatt der 0 auch die Variable reinschreiben. Kann man machen wie man möchte.

Das export DISPLAY=:0 steht nur drin, 1. falls jemand die Ausgabe auf dem Monitor 2,3,5,10 usw. haben möchte, und auch, weil dann speziell unter KDE es vorkommen kann, das kein Dialog angezeigt wird (zumindest war es mal so).

checkupdates+aur habe ich nur um zu überprüfen ob Pakete aus dem AUR ein Update haben.  :)

Trotzdem vielen Dank für deine Version!



PS: 1. brauchen wir hier noch andere/mehr Smilies
       2. muss ich jetzt doch mal nachschauen was zenity ist  :)

I'm worse at what I do best and for this gift I feel blessed

guest5

Sehr gut, ich neige ja dazu mir für jeden Furz mittlerweile ein Qt-Tool zusammen zu klicken/coden (schon zur richtigen Krankheit geworden bei mir)! :D

PS: Hier noch ein paar Reserve-Smilies  :) ;) :D ;D >:( :( :o 8) ??? ::) :P :-[ :-X :-\ :-* :'(

Grüße

Daemon

Zitat von: Prinz am 31. Januar 2018, 15:28:03
PS: Hier noch ein paar Reserve-Smilies  :) ;) :D ;D >:( :( :o 8) ??? ::) :P :-[ :-X :-\ :-* :'(

Sind aber leider auch nicht die dabei die ich wollte.  :'( :D
I'm worse at what I do best and for this gift I feel blessed

gosia

Hallo Daemon,
Zitat von: Daemon am 31. Januar 2018, 15:18:19
identisch sind die Ausgaben nicht, deswegen ist die Abfrage auf 0 auch nicht unnötig.  ;) Eventuell den Unterschied übersehen?
Ach herrjeh,
--icon dialog-error

und
--icon dialog-ok

da brauche ich wohl eine neue Brille ;)
Zitat von: Daemon am 31. Januar 2018, 15:18:19
       2. muss ich jetzt doch mal nachschauen was zenity ist  :)
Hm, basiert auf GTK, ist also wohl eher nichts für KDE-User :(
https://help.gnome.org/users/zenity/3.24/
Zenity – Wikipedia

Aber mir ist eingefallen, wer keine aufpoppenden Fenster mag und sowieso conky benutzt, kann ein  abgewandeltes Skript auch gut in Conky einbauen.

Viele Grüße gosia

Daemon

Genau!  :D

Hört sich zwar blöd an, aber in der kurzen Zeit (könnte es ja auch einstellen auf 30 Sekunden) sehe ich dann anhand des Icons ob es was gibt oder nicht. Ob ich die Anzahl sehe weiß ich noch nicht, kam bisher noch nichts.  :D

Ich hatte das sogar zuerst im conky,
Updates $alignr ${execi 60 checkupdates | wc -l}

aber da ich das nicht mehr benutze, habe ich es so gemacht.
I'm worse at what I do best and for this gift I feel blessed

gosia

Hallo Daemon,
kleine Korrektur für alle Debian-basierten Distris:
number=$(apt-get upgrade | wc -l)

geht so wohl nicht, jedenfalls nicht ohne Umwege. Statt dessen kann man das nehmen
number=$(apt-get -qq --print-uris upgrade | wc -l)


Viele Grüße gosia

Daemon

Vielen Dank für die Berichtigung!

Ich habe nur das aus dem Arch Wiki kopiert
apt-get upgrade -> n

konnte es allerdings nicht testen.
I'm worse at what I do best and for this gift I feel blessed

guest5

apt wurde speziell für die Kommandozeile optimiert, deswegen sollte man nicht nur hier
apt-get

durch
apt

ersetzen.

Grüße



gosia

Hallo Prinz,
Zitat von: Prinz am 31. Januar 2018, 19:09:45
apt wurde speziell für die Kommandozeile optimiert, deswegen sollte man nicht nur hier
apt-get

durch
apt

ersetzen.
Ach ja, immer diese Neuerungen, da bin ich zu alt für ;)
Damit verkürzt sich das ganze tatsächlich etwas
number=$(apt list -qq --upgradeable | wc -l)

apt ist allerdings noch eine kleine Baustelle, wirft deshalb auch eine Warnung vor sich selbst aus
WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

Also, "Vorsicht ist die Mutter der Porzellankiste"

Viele Grüße gosia

Daemon

Zitat von: gosia am 31. Januar 2018, 20:27:09
Ach ja, immer diese Neuerungen, da bin ich zu alt für ;)

Kannte ich auch nicht, benutze aber auch seit über 10 Jahren keine Distribution mehr die apt-get hat.
I'm worse at what I do best and for this gift I feel blessed

guest5

Zitat von: gosia am 31. Januar 2018, 20:27:09
WARNING: apt does not have a stable CLI interface. Use with caution in scripts.


Dieser Hinweis ist auch bei apt-get angebracht und leider auch bei aptitude.

Laut Debian soll man apt-get durch apt ersetzen, hier ein Auszug in deutscher Sprach von apt › apt › Wiki › ubuntuusers.de
ZitatDas Programm kann zwar nichts, was die spezialisierten Programme wie apt-get und apt-cache nicht auch könnten, ist aber stärker für das interaktive Arbeiten auf der Kommandozeile optimiert.

Aber ich selbst hatte erst einen Fall in welchem apt machte was mit apt-get nicht "immer" lief.
apt schein wohl bei Abfragen wie z.B. Update den vollständigen Vorgang zu verifizieren.

Grüße