Blog

Debian Server auf Updates prüfen via Shell Script (apt-get update)

Verfasst von: Marius Cramer

Debian Server auf Updates prüfen via Shell Script (apt-get update)

Wer unter Linux arbeitet und mehrere Debian Server verwaltet, sollte sich Gedanken darüber machen, wie er zeitsparend überprüft, ob für einen Server Updates verfügbar sind (via APT).
Jedes mal einen Login per SSH auszuführen ist ein wenig lästig und erst recht bei vielen Servern.

Hier nun eine Schritt für Schritt Anleitung, wie ich viele Server automatisch auf Updates prüfe.

Schritt 1:
Einen Public Key für SSH erstellen, den wir nur für diesen Zweck verwenden.

ssh-keygen -b 2048 -f /pfad/zum/key/upserver.key

Es werden zwei Dateien erstellt: /pfad/zum/key/upserver.key und /pfad/zum/key/upserver.key.pub
In diesem Fall verzichte ich auf die Vergabe einer Passphrase, da diese meiner Meinung nach für diesen Zweck nicht wichtig ist.

Schritt 2:
Auf jedem Server, den wir auf diese Art prüfen wollen, richten wir nun einen User ohne besondere Rechte ein.

# Verbindung zum Server als root
ssh -l root server.meinserver.de

# folgende Befehle dann auf dem Server

# Zuerst konfigurieren wir Apt so, dass einmal am Tag die Paketliste erneuert wird (apt-get update)
echo 'APT::Periodic::Update-Package-Lists "1"' >> /etc/apt/apt.conf.d/10-userconf

# Neuen Benutzer "serverupdate" anlegen
useradd -d /home/serverupdate -m -s /bin/rbash serverupdate
logout

# Folgende Befehle dann wieder auf dem lokalen Rechner

# Vorhin angelegten Key (Public!) auf den Server kopieren
ssh root@server.meinserver.de 'mkdir /home/serverupdate/.ssh;echo '`cat /pfad/zum/key/upserver.key.pub`' >> /home/serverupdate/.ssh/authorized_keys;chown -R serverupdate:serverupdate /home/serverupdate/.ssh'

Schritt 3:
Wir haben nun auf dem Server die Voraussetzung geschaffen um automatisch prüfen zu können, ob es Updates gibt.
Dies machen wir nun mit folgendem Befehl:

ssh -i /pfad/zum/key/upserver.key serverupdate@server.meinserver.de "apt-get dist-upgrade -qq -y -s | grep '^Inst ' | wc -l"

Als Ergebnis kriegen wir einfach nur eine Zahl – die Anzahl der neuen oder aktualisierbaren Pakete.

Schritt 4:
Nun setzen wir ein kleines Shell-Script zusammen:

#!/bin/bash
SERVER=$1
PORT=$2
SSHKEY=/pfad/zum/key/upserver.key

if [[ "$SERVER" = "" ]] ; then
  echo "Nutzung: $0  [
]" ;
  exit 1 ;
fi

if [[ "$PORT" = "" ]] ; then
  PORT=22 ;
fi

NUM=`ssh -p $PORT -i $SSHKEY serverupdate@$SERVER "apt-get dist-upgrade -qq -y -s | grep '^Inst ' | wc -l"` ;
if [[ "$NUM" -lt 1 ]] ; then
  echo "Keine Updates gefunden." ;
else
  echo "Es wurden $NUM Updates gefunden." ;
fi

exit 0 ;

Dem Script noch mit chmod 755 ./updatecheck ausführbare Rechte geben.
Nun kann einfach mit ./updatecheck server.meinserver.de geprüft werden, ob Updates vorliegen – und das ganz ohne weiteren Login auf dem Server. Die Updates muss man dann ggf. natürlich weiterhin als root installieren.

Hat man mehrere Server, so kann man das Ganze auch sehr einfach erweitern. Für jeden Server sind die gleichen Schritte wie oben genannt notwendig (User anlegen, public Key kopieren, tgl. Apt-Update aktivieren).

#!/bin/bash
SERVERLIST="server1.meinserver.de server2.meinserver.com server3.yzabc.de"
SSHKEY=/pfad/zum/key/upserver.key

for SERVER in $SERVERLIST ; do
  NUM=`ssh -i $SSHKEY serverupdate@$SERVER "apt-get dist-upgrade -qq -y -s | grep '^Inst ' | wc -l"` ;
  if [[ "$NUM" -lt 1 ]] ; then
    echo "Server ${SERVER}: Keine Updates gefunden." ;
  else
    echo "Server ${SERVER}: Es wurden $NUM Updates gefunden." ;
  fi ;
done

exit 0 ;

Modifikation:
Mit einer kleinen Änderung ist es natürlich auch möglich sich nicht die Anzahl der Updates sondern die einzelnen Pakete anzeigen zu lassen.
Folgende Zeilen werden dabei ersetzt:

NUM=`ssh -p $PORT -i $SSHKEY serverupdate@$SERVER "apt-get dist-upgrade -qq -y -s | grep '^Inst ' | wc -l"` ;
if [[ "$NUM" -lt 1 ]] ; then
  echo "Keine Updates gefunden." ;
else
  echo "Es wurden $NUM Updates gefunden." ;
fi

in

NUM=`ssh -p $PORT -i $SSHKEY serverupdate@$SERVER "apt-get dist-upgrade -qq -y -s | grep '^Inst '"` ;
if [[ "$NUM" = "" ]] ; then
  echo "Keine Updates gefunden." ;
else
  echo "Folgende Updates gefunden:" ;
  echo $NUM ;
fi

Nach diesen Begriffen suchten die Benutzer:

  • debian server verwalten
  • debian server verwalten
  • debian server update befehl
  • sudo apt-get update shell skript
  • debian shell system update mail
  • shell script testen
  • debian apt-get über script
  • debian script aptitude update
  • debian shell immer ausführen
  • debian schellscript
  • debian schellscript
  • debian auf updates prüfen
  • apt-get script update
  • apt-get update bash script
  • apt script
  • debian shell erstellen
  • debian serve auf updates prüfen
  • ssh skript zum überprüfen
  • debian updaten
  • apt-get update ausführbares script
  • debian prüfen ob updates verfügbar
  • debian shell script
  • aktualisierung prüfen debian
  • debian shell script erstellen
  • debian shell patch ausführen
0


Kommentar hinzufügen

E-Mail-Benachrichtigung bei weiteren Kommentaren.