[Eisfair] Fragen

Helmut Backhaus helmut.backhaus at gmx.de
Do Jun 9 23:26:23 CEST 2016


Hallo Marcus!

Am 09.06.2016 um 22:34 schrieb Marcus Roeckrath:
> Hallo Helmut,
>
> Helmut Backhaus wrote:
>
>> Nicht drängeln! :-))
>
> Natürlich nicht; es gilt - wie immer - Weihnachten.

Dann müssen wir uns nur noch auf's Jahr einigen ...

>
>> Ich bin eigentlich fertig, aber da ist noch ein blöder Fehler drin. Ich
>> bin aber wohl auf dem Richtigen Weg ...
>
> Du kannst uns ja am aktuellen Stand teilhaben, um nach dem blöden Fehler zu
> suchen.
>

Nur ruhig, ich glaube ich habe fertig!

Das folgende Script habe ich unter unter "/usr/local/bin/update-chk.sh" 
abgelegt und Ausführbar gemacht "chmod +x /usr/local/bin/update-chk.sh".
Dann habe ich einen Eintrag in die Datei "/etc/profile" in die Zeile 38 
hinter:

if [ ${LOGNAME} = root ]
then
-->    source /usr/local/bin/update-chk.sh

gemacht!

Damit wird, wenn eine Konsole als root geöffnet wird, dass Script 
gestartet. Eine Ausgabedatei wird in "/tmp/update-chk.dat" abgelegt. Auf 
Basis dieser Datei wird auch geprüft, ob eine Prüfung durchgefüht wird. 
Ich habe den Wert auf einmal am Tag gesetzt "tcheck=$((60*60*24))". Wenn 
gewünscht kann dieser Wert auch auf z.B. "tcheck=$((60*60*24*7)) gesetzt 
werde (eine Woche).

Ich habe mich für diesen Weg entschieden, weil "mail" nicht zu den 
Bordmitteln gehört (oder habe ich da etwas übersehen?). Das Script läuft 
also "out of the box"!

Eine Mail-Variante habe ich auch noch in der Pipeline aber das kann ich 
nicht testen, weil ich keinen Eis 1 mit Mail habe. Das muss ich mir dann 
erst mal installieren.

OK, genug geschwafelt! Hier das Script:
Bitte mit den Umbrüchen aufpassen!!!

-->

  #!/bin/bash

########################################################################
# update-chk.sh
# ein mini Script um auf einem Eisfair 1 beim log in als root zu prüfen
# ob upgrades für den Server vorliegen.
# Das Script kann in die Datei "/etc/profile" eingebunden werden um es
# beim login ausführen zu lassen.
#
# Ich habe es in Zeile 38 hinter:
# if [ ${LOGNAME} = root ]
# then
#     source /usr/local/bin/update-chk.sh
# eingebunden!
# So wird es nur beim Login als root gestartet und das auch nur einmal
# Täglich.
#
# Autor      : Helmut Backhaus
# Erstell  am: 09.06.2016
# Geändert am: 09.06.2016
# Version    : 0.0.1
########################################################################

# set -xv

ausgabe()
{
   sed -i '/WARNING/d' $chkfile
   lastcheck=$(cat $chkfile | grep -i 'last check')
   sed -i '1d' $chkfile
   count=$(cat $chkfile | wc -l)
   if [ $count -gt 0 ] ; then
     /usr/local/bin/colecho "There are $count upgradable packages 
available!" rd
     /usr/local/bin/colecho "For more info run Setup!" rd
     echo
   else
     /usr/local/bin/colecho "There are no upgradable packages available!" gn
     /usr/local/bin/colecho "Your System is fine!" gn
     echo
   fi
}

chkfile="/tmp/update-chk.dat"
tnow=$(date "+%s")
tcheck=$((60*60*24))

if ! [ -f $chkfile ] ; then
   /usr/local/bin/colecho "There is no chk file for upgrade check" gn
   /usr/local/bin/colecho "Will be done, please wait ..." gn
   echo
   /var/install/bin/list-packages --batch upgradable > $chkfile
   ausgabe
   checkvar="yes"
else
   tdatei=$(stat -c %Z $chkfile)
   alter=$(( $tnow - $tdatei ))
fi

if [ -z $checkvar ] && [ $alter -ge $tcheck ] ; then
   rm $chkfile
   /usr/local/bin/colecho "Upgrade check will be done!" gn
   /usr/local/bin/colecho "Please wait ..." gn
   echo
   /var/install/bin/list-packages --batch upgradable > $chkfile
   ausgabe
else
   if [ -z $checkvar ] && [ -n $alter ] ; then
     /usr/local/bin/colecho "Updates are allready checked today!" gn
     echo
   fi
fi
<--

Wie immer feedback Erwünscht!!


-- 
Gruß,
Helmut



Mehr Informationen über die Mailingliste Eisfair