Beiträge von Sojan im Thema „Automatisiertes Checken nach Updates per SSH“

    Überseh ich grad was? Bash arbeitet ja von oben nach unten, dann wird jetzt erst 4 mal die obere schleife ausgeführt, dann gewartet und dann 4 mal die untere. Sehe jetzt keinen Vorteil.

    Ja, übersiehst du ;)

    Ich starte die Prozesse fast zeitgleich und verschiebe sie in den Hintergrund. Habe unmittelbar vor dem wait ein jobs eingefügt, um mir die laufenden Hintergrundprozesse anzeigen zu lassen.

    Noch in der gleichen Sekunde nach dem Start sind alle 8 Prozesse (im Beispielscript waren es nur 4) im Hintergrund gestartet und werden parallel abgearbeitet.

    Insgesamt benötigt der Durchlauf 8 Sekunden, beim alten Script waren es 26 Sekunden.

    Ich überlege gerade wie man das machen könnte das alle abfragen gleichzeitig getätigt werden und man nicht so lange warten muss.

    Habe jetzt die SSH-Abfragen als Hintergrundprozess laufen, geht jetzt schon deutlich flotter.

    Da ich aber nicht weiß, wie ich den Rückgabewert aus einem Hintergrundprozess in eine Variable bekomme, habe ich das ganze temporär nach /dev/shm geschrieben.

    Und wenn du das Update machst wenn du eingeloggt bist fehlt dir jetzt aber das Datum; wäre es nicht sinniger einen hook einzubauen der die log immer schreibt wenn du apt upgrade ausführst?

    Stehe irgendwie auf dem Schlauch, verstehe deine Frage nicht.

    Ich frage doch nur das Datum des letzten Upgrades ab, dass wird doch durch apt update gar nicht beeinflusst.

    Habe das Script noch etwas aufgeräumt und die SSH-Anmeldedaten in der .ssh/config hinterlegt.

    Sieht gleich etwas übersichtlicher aus und der einfache Aufruf "ssh server" verbindet mich mit dem Homeserver.

    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

    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

    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. ;)

    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.