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.

  • Bringt das dist-upgrade überhaupt was wenn du davor nicht die repos updatest; also ohne apt update?

    Mist, du hast recht.

    Da hatte ich wohl vorab ein apt update gemacht und konnte mich nicht mehr daran erinnern. :rolleyes:

    Also muss ich weiter nach einer Lösung suchen.

  • 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

    Persönlicher Kontakt

    System: Framework Laptop 16 DIY Edition, AMD Ryzen 7 7840HS, 32GB RAM, AMD Radeon RX 7700S, 2x 1TB M.2 SATAIII, Arch(Gnome[Wayland])

    Edited 2 times, last by Tealk: Scirpt erweitert (March 31, 2022 at 9:40 AM).

  • 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.

  • Warum benutzt du nicht den Schnipsel für deb?

    Weil ich sehen möchte, welche Pakete aktualiert werden können.

    Sollte ich mich umentscheiden, dann ist das schnell getan. Ist ja nur eine Stelle im Script anzupassen.

  • Meine zusätzlich, speicher doch das Ergebens in eine variable und werte es 2 mal aus?

    Allerdings fehlt diese Zeile bei Archlinux und ich habe mich jetzt für ein einheitliches Layout entschieden.

    Zusammengefasst ist es genau das was ich haben wollte, vielen Dank für deine Hilfe Tealk .

  • 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!