Electronic Frontier Foundation The Linux Foundation Linux Kernel

0 Mitglieder und 1 Gast betrachten dieses Thema.

*

Daemon

  • Administrator
  • *****
  • 768
  • Geschlecht: Männlich
Benachrichtigung über Updates
31. Januar 2018, 00:46:29
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:
Code
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
Code
crontab -e
alles manuell eintragen. Bei mir sieht es dann so aus:
Code
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:
Code
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.
Code
kdialog --geticon all all 

Falls jemand Fehler findet oder einen Verbesserungsvorschlag hat, immer her damit.

Linkback: https://systemdfree.de/programmierung/11/benachrichtigung-uber-updates/235/
Letzte Änderung: 31. Januar 2018, 01:17:34 von Daemon
I'm worse at what I do best and for this gift I feel blessed

*

gosia

  • Mitglied
  • ***
  • 137
Re: Benachrichtigung über Updates
31. Januar 2018, 15:05:43
Hallo Daemon,
zuerst mal Danke für das Skript, sowas ist bei mir (und hoffentlich nicht nur bei mir) immer gern gesehen.
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
Code
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
Code
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:
Code
#!/bin/sh
number=$(checkupdates | wc -l)
zenity --info --title "Update Benachrichtigung" --text "Es sind $number Updates vorhanden"
gibt dann sowas

 

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

  • Administrator
  • *****
  • 768
  • Geschlecht: Männlich
Re: Benachrichtigung über Updates
31. Januar 2018, 15:18:19
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  :)


*

Prinz

  • Mitglied
  • ***
  • 267
  • Prinz schreibt was andere nur zu sagen wagen.
Re: Benachrichtigung über Updates
31. Januar 2018, 15:28:03
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
Werde jetzt ein aktives sowie wertvolles Mitglied der Linux-Welt, und melde Dich noch heute im Forum an.
https://systemdfree.de/register/

*

Daemon

  • Administrator
  • *****
  • 768
  • Geschlecht: Männlich
Re: Benachrichtigung über Updates
31. Januar 2018, 15:36:39
PS: Hier noch ein paar Reserve-Smilies  :) ;) :D ;D >:( :( :o 8) ??? ::) :P :-[ :-X :-\ :-* :'(

Sind aber leider auch nicht die dabei die ich wollte.  :'( :D

*

gosia

  • Mitglied
  • ***
  • 137
Re: Benachrichtigung über Updates
31. Januar 2018, 15:38:45
Hallo Daemon,
identisch sind die Ausgaben nicht, deswegen ist die Abfrage auf 0 auch nicht unnötig.  ;) Eventuell den Unterschied übersehen?
Ach herrjeh,
Code
--icon dialog-error
und
Code
--icon dialog-ok
da brauche ich wohl eine neue Brille ;)
       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

  • Administrator
  • *****
  • 768
  • Geschlecht: Männlich
Re: Benachrichtigung über Updates
31. Januar 2018, 15:44:09
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,
Code
Updates $alignr ${execi 60 checkupdates | wc -l}
aber da ich das nicht mehr benutze, habe ich es so gemacht.

*

gosia

  • Mitglied
  • ***
  • 137
Re: Benachrichtigung über Updates
31. Januar 2018, 18:23:06
Hallo Daemon,
kleine Korrektur für alle Debian-basierten Distris:
Code
number=$(apt-get upgrade | wc -l)
geht so wohl nicht, jedenfalls nicht ohne Umwege. Statt dessen kann man das nehmen
Code
number=$(apt-get -qq --print-uris upgrade | wc -l)

Viele Grüße gosia

*

Daemon

  • Administrator
  • *****
  • 768
  • Geschlecht: Männlich
Re: Benachrichtigung über Updates
31. Januar 2018, 18:41:56
Vielen Dank für die Berichtigung!

Ich habe nur das aus dem Arch Wiki kopiert
Code
apt-get upgrade -> n
konnte es allerdings nicht testen.

*

Prinz

  • Mitglied
  • ***
  • 267
  • Prinz schreibt was andere nur zu sagen wagen.
Re: Benachrichtigung über Updates
31. Januar 2018, 19:09:45
apt wurde speziell für die Kommandozeile optimiert, deswegen sollte man nicht nur hier
Code
apt-get
durch
Code
apt
ersetzen.

Grüße



*

gosia

  • Mitglied
  • ***
  • 137
Re: Benachrichtigung über Updates
31. Januar 2018, 20:27:09
Hallo Prinz,
apt wurde speziell für die Kommandozeile optimiert, deswegen sollte man nicht nur hier
Code
apt-get
durch
Code
apt
ersetzen.
Ach ja, immer diese Neuerungen, da bin ich zu alt für ;)
Damit verkürzt sich das ganze tatsächlich etwas
Code
number=$(apt list -qq --upgradeable | wc -l)
apt ist allerdings noch eine kleine Baustelle, wirft deshalb auch eine Warnung vor sich selbst aus
Code
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

  • Administrator
  • *****
  • 768
  • Geschlecht: Männlich
Re: Benachrichtigung über Updates
31. Januar 2018, 20:33:42
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.

*

Prinz

  • Mitglied
  • ***
  • 267
  • Prinz schreibt was andere nur zu sagen wagen.
Re: Benachrichtigung über Updates
31. Januar 2018, 23:30:37
Code
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
Zitat
Das 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