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

    Rollenspiel.Monster -Deine Fediverse Rollenspiel Nodes

    GPG

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

    Einmal editiert, zuletzt von Tealk (30. März 2022 um 22:19)

  • 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[Wayland])

    2 Mal editiert, zuletzt von Tealk (31. März 2022 um 09:40) aus folgendem Grund: 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

    Rollenspiel.Monster -Deine Fediverse Rollenspiel Nodes

    GPG

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

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

    Rollenspiel.Monster -Deine Fediverse Rollenspiel Nodes

    GPG

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

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

    Zitat


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

    Rollenspiel.Monster -Deine Fediverse Rollenspiel Nodes

    GPG

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

  • 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

    Rollenspiel.Monster -Deine Fediverse Rollenspiel Nodes

    GPG

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

    Einmal editiert, zuletzt von Tealk (31. März 2022 um 16:55)

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!