Automatisiertes Checken nach Updates per SSH

  • Habe gerade wieder einen Punkt auf meiner ToDo-Liste erledigt, vielleicht ist es ja für den einen oder anderen interessant. Sorry. wenn es etwas länger wird. ;)


    Wer kennt es nicht, ihr habt diverse VM / Container oder Raspberries am Laufen und müsst regelmäßig manuell nachschauen, ob Updates vorhanden sind.

    Also fassen wir diese Abfragen in einem Script zusammen.


    Voraussetzung

    • SSH-Zugang
    • Anmeldung per Keyfile (spart die Eingabe des Passworts)


    Zum Script

    • ssh -i : Sind mehrere SSH-Keys vorhanden, muss angegeben werden, welcher benutzt werden soll
    • NUTZERNAME: User in dem Conatiner / VM ...
    • apt-get -s : das "s" steht für Simulation, es werden keine Root-Rechte zur Ausführung benötigt
    • checkupdates : Nur Archlinux, zeigt vorhandene Updates an
    • awk ... : Hat nur kosmetische Gründe, die Ausgabe sieht dann etwas schöner aus


    Und so sieht's dann aus. Auf dem Homeserver, Oscam und Gitea liegen Updates vor.

  • Wäre folgendes vielleicht nicht schöner?

    Code
    apt update && apt list --upgradeable

    Grundsätzlich schon, erfordert aber Root-Rechte. Ich wollte eine Passwortabfrage vermeiden.


    Unter Archlinux gibt's ja den Befehl "checkupdates", der funktioniert ohne sudo. Sowas habe ich auch für apt gesucht.

  • Also ich bin grad soweit:

    Code
    echo "########## xx | xx ############################################"
    
    ssh xxx "apt-get update" >/dev/null 2>&1
    ssh xxx "apt-get --just-print dist-upgrade | awk '/upgraded/ { print $2 }'"
    echo

    muss mal schauen was die schönere Ausgabe gibt; hab den Vorteil das ich halt root rechte habe mit dem ssh benutzer

  • Nächster punkte wäre vielleicht wenn es updates gibt sich direkt einloggen oder so, vielleicht in einem neuen Fenster damit man dort gleich arbeiten kann.


    Grad mal ein wenig verkürzt das ganze:

    Rollenspiel.Monster -Deine Fediverse Rollenspiel Nodes

    GPG

    System: TUXEDO Aura 15 - Gen1, AMD Ryzen 7 4700U, 32GB RAM, 1TB M.2 SATAIII, EndeavourOS(Gnome)

    Edited 2 times, last by Tealk: Scirpt erweitert ().

  • Tealk : Danke für deinen Input :thumbup:


    Musste zuerst noch das Problem lösen, dass "apt update" nur zusammen mit sudo funktioniert.


    Um die Passwortabfrage zu vermeiden, habe ich in der Sudoers "apt update" vom Passwort "befreit". Hoffe mal, dass stellt jetzt kein Sicherheitsproblem dar. Aber in meinem Fall sind die Rechner eh nur von Zuhause aus erreichbar.

    Code
    # /etc/sudoers
    
    NUTZER   ALL=(ALL:ALL) ALL,NOPASSWD:/usr/bin/apt update
    # oder
    %sudo    ALL=(ALL:ALL) ALL,NOPASSWD:/usr/bin/apt update

    Das läuft jetzt schon mal sauber ohne Passwort durch

    Code
    ssh NUTZER@192.168.178.54 "sudo apt update >/dev/null 2>&1 && apt-get --just-print dist-upgrade | awk '/^Inst/ { print $2 }'"


    Eine Schleife ist eine gute Idee, muss aber berücksichtigen, dass ich neben Debian auch noch Archlinux habe. Also irgendwo noch eine Bedingung einbauen. ;)

  • Hab das script mal nochmal um eine abfrage ob der server verfügbar ist erweitert


    Eine Schleife ist eine gute Idee, muss aber berücksichtigen, dass ich neben Debian auch noch Archlinux habe. Also irgendwo noch eine Bedingung einbauen. ;)

    du kannst oben einfach noch etwas mit : hingen anfügen, so wie namen und userip getrennt sind und das dann mit ${item[2]} bis unendlich weiter führen

  • du kannst oben einfach noch etwas mit : hingen anfügen, so wie namen und userip getrennt sind und das dann mit ${item[2]} bis unendlich weiter führen

    Habe ich auch schon gemacht.


    So sieht's jetzt aus

  • GIbt nen grund warum case und kein IF? Weil dann könntest du schöner Fehler abfangen. Tippfehler oder Einträge die es nicht gibt.

    Nein, gibt keinen besonderen Grund. Kam mir halt als erstes in den Sinn.


    Die Idee mit dem Online-Status ist gut, werde ich noch einbauen...danke.

  • Es gibt leider echt keinen einheitlichen weg wie man ein neues Fenster/Tab öffnen kann wenn es ein Update gibt, sehr schade.

    Das wäre halt noch nice das man dann gleich das Update auch durchführen könnte.

  • Bin gerade noch dabei, die Anzahl der Updates einzubauen.


    Für Archlinux klappt es schon, Debian hat gerade keine offenen Updates, muss ich später testen.

    Code
    $ ssh xxx@IP "checkupdates" | tee /dev/tty | echo "Anzahl:  $(wc -l)"
    
    ca-certificates-mozilla 3.76-1 -> 3.76.1-1
    libarchive 3.6.0-1 -> 3.6.0-2
    Anzahl:  2
  • Warum benutzt du nicht den Schnipsel für deb?

    Code
    "apt-get --just-print dist-upgrade | awk '/upgraded/ { print $2 }'"

    Dann bekommst du folgende Zeile ausgegeben:

    Quote


    0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

  • Arch hat einfach ne richtig schöne Ausgabe xD


    Mir reicht reicht erst mal die Ausgabe obs Updates gibt

    Coll wäre halt noch wenn man dann den Server anklicken könnte und direkt verbindet

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!