Ja der nächste schritt ist softwarespezifisch zu werden; da weiß ich aber noch nicht wie ich das genau machen möchte das das auch für mehr als nur mich funktional ist.
Beiträge von Tealk im Thema „Automatisiertes Checken nach Updates per SSH“
-
-
Ich hab mal weiter am Script gearbeitet; mittlerweile übertreib ich wohl ein wenig xD
Ich habs auch mal öffentlich gemacht jetzt: https://codeberg.org/Tealk/shell-server-update-check
-
Ich hab mein Konzept mal nochmal ein wenig abgeändert, so das ich gleich von dem Scirpt aus updaten kann:
Codessh "${item[1]}" "apt-get autoclean >/dev/null 2>&1 && apt-get dist-upgrade -V && apt-get autoremove >/dev/null 2>&1 && apt-get clean >/dev/null 2>&1"
Dann hab ich gerade noch folgendes gefunden: https://github.com/koalaman/shellcheck/wiki/SC2206
Dann würde der for teil so aussehen:
-
Ü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.
Außerdem solltest du die untere schleife so aufbauen das die so oft läuft wie es dateien in /dev/shm/ gibt sonst läuft das nochmals auf fehler wenn du oben keine rückgabe bekommen hast.
-
Ah hab den Befehl falsch gelesen, dachte du schreibst die Datei.
-
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?
-
Wie hast du dann jetzt deine Unterschiedlichen Update Commands gelöst?
-
Ich überlege gerade wie man das machen könnte das alle abfragen gleichzeitig getätigt werden und man nicht so lange warten muss.
-
-
Weil ich sehen möchte, welche Pakete aktualiert werden können.
Meine zusätzlich, speicher doch das Ergebens in eine variable und werte es 2 mal aus?
-
-
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.
-
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.
-
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
-
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:
Bash
Alles anzeigen#!/bin/bash hosts=( "Name:user@IP" "Name:user@IP" "Name:user@IP" "Name:user@IP" ) clear for host in "${hosts[@]}"; do IFS=":" item=( $host ) echo "### ${item[0]}" if ! ssh "${item[1]}" "apt-get update" >/dev/null 2>&1; then echo "Server nicht erreichbar" else ssh "${item[1]}" "apt-get --just-print dist-upgrade | awk '/upgraded/ { print $2 }'" fi echo done exit 0
-
Also ich bin grad soweit:
Codeecho "########## 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
-
Bringt das dist-upgrade überhaupt was wenn du davor nicht die repos updatest; also ohne apt update?
-
apt-get -s : das "s" steht für Simulation, es werden keine Root-Rechte zur Ausführung benötigt
Wäre folgendes vielleicht nicht schöner?