Check_MK Plugin | LOCAL Check ! | geplante Aufgaben | scheduled Tasks

Problem : Man möchte die geplanten Tasks auf einem Windows System überwachen.

Lösung : Ich habe hier ein kleines Skript geschrieben das als lokaler Check auf einem Windows System funktioniert.

Download des Skriptes : task_watch.zip

Installation ist wie immer recht einfach , die ZIP Datei entpacken und in das check_mk\local Verzeichnis kopieren , dannach einen FULL SCAN in Check_MK ausführen.
Dannach sollte es als local Check auftauchen.

Das Ergebnis sieht dann so aus :

Alles TASK sind richtig durch gelaufen




Es gab Fehler beim TASK


Powershell 3.0 | Get-Help -Detailed -Examples liefert keine Ergebnisse

Problem :

Powershell 3.0 liefert keine anderen Ergebnisse bei Get-Help Get-Service -Detailed oder Get-Help Get-Service -Detailed , dies liegt an der fehlenden Übersetzung der Help Files. Update-Help muss auf englisch ausgeführt werden. Get-Service habe ich hier nur als Beispiel verwendet.

Lösung :

Einmal
Update-Help -UICulture "en-us"
ausführen und man erhällt zwar ein deutsch/englisch Mischmasch aber dafür alle Informationen.

Funktion um Logfile zu schreiben für die Powershell

Man möchte in der Powershell ein Logfile schreiben und dies immer mit Datum & Zeit versehen.

Hier meine Funktion dazu :


###################################
# Function to write Logfile
###################################
function write_log ($Inhalt)
{
$FileExists = Test-Path $LogFile
    $DateNow = Get-Date -Format "dd.MM.yyyy HH:mm" # Ermittelt das aktuelle Datum mit diesem Syntax 01.10.2013 10:00
    $FileInp = $DateNow + ' | ' + $Inhalt                          # Setzt die Zeile für unser Logfile zusammen
    If ($FileExists -eq $True){ # Wenn dir Datei existiert reinschreiben
        Add-Content $LogFile -value $FileInp  # Zeile hinten an die vorhanden Einträge anhängen
    } else {
       New-Item $Logfile -type file # Wenn dir Datei nicht existiert anlegen
       Add-Content $LogFile -value $FileInp # und reinschreiben
    }
}



Die Variable $Logfile muss natürlich definiert werden.

z.B. $Logfile = "C:\Skripte\logs\test.log"

Check_MK Plugin | LOCAL Check ! | Linux Updates

Ich habe hier als Server Überwachung Check_MK am laufen , die Serverüberwachung bringt die Möglichkeit mit Windows Systeme auf Updates zu überprüfen. Diese Funktion habe ich für Linux Systeme vermisst und habe einen local Check für Debian geschrieben der die selbe Aufgabe übernimmt.

eine Datei anlegen mit folgendem Inhalt z.B. debian_updates.sh


#!/bin/bash
LOGPATH=`dirname $(readlink -f ${0})`
LOGFILE=debian_updates.log
LOGFULL=$LOGPATH/logs/$LOGFILE
DEBVER=`cat /etc/debian_version`
TNOW=$(date "+%s");
STATUS=0

function Get_Updates {
         apt-get update > /dev/null 2> /dev/nul
         AVUP=`apt-get dist-upgrade -qq -y -s |  grep -c '^Inst '`
         AVPACK=`apt-get dist-upgrade -qq -y -s |  awk '/^Inst / { print $2 }' | sed ':a;N;$!ba;s/\n/ /g'`
         AVUPA=$(($AVUP + 1));
         AVUP=$(($AVUPA - 1));
         if [ $AVUP != 0 ]; then
              STATUS=1
              STATUSTXT="$AVUP Updates ( Debian Version : $DEBVER )__ $AVPACK"
         else
              STATUS=0
              STATUSTXT="System ist auf dem aktuellsten Stand ( Debian Version : $DEBVER )"
         fi

        echo "$STATUS Debian_Update - $STATUSTXT" > $LOGFULL
        echo "$STATUS Debian_Update - $STATUSTXT"
}


if [ -e $LOGFULL ];
   then
   TDATEI=$(stat -c %Z $LOGFULL);
   ALTER=$(($TNOW - $TDATEI));
   MAXALTER=86400;      # ---- Berechnet sich wie folgt 24*60*60=86400 Sekunden
                if [ $ALTER -gt $MAXALTER ];
                        then
                        Get_Updates
                        else
                        while read line; do
                                echo $line
                        done < $LOGFULL
                        exit;
                fi
   else
        Get_Updates
   fi

exit



die Datei ausführbar machen mit chmod u+x Dateiname und dann in /usr/lib/check_mk_agent/local/ kopieren. Ein Unterverzeichnis mit dem Namen logs anlegen und einen Full Scan auf die Maschine ausführen. Ab dann werden die Updates auch in der Serverüberwachung angezeigt.

z.B. keine Updates



z.B. Updates stehen zur Installation

Excel: Kalenderwoche nach DIN

Problem:
Die Excel-interne Kalenderwochen-Funktion geht nach dem amerikanischen Standard, aber ich lebe in Deutschland!!

Lösung:
Hier einmal die Formel-Lösung:
=KÜRZEN((A1-DATUM(JAHR(A1+3-REST(A1-2;7));1;REST(A1-2;7)-9))/7)


Hier die VBA-Lösung:
Function kalenderwoche_din(Datum As Date) As Integer
''von Christoph Kremer, Aachen
'Berechnt die KW nach DIN 1355
Dim t&
t = DateSerial(Year(Datum + (8 - Weekday(Datum)) Mod 7 - 3), 1, 1)
kalenderwoche_din = (Datum - t - 3 + (Weekday(t) + 1) Mod 7) \ 7 + 1
End Function


Quelle: office-lösungen: Kalenderwoche nach DIN

Robocopy - LOG Funktion - Umlaute Problem - XP010 und XP027

Problem :
Wenn man ein Logfile von Robocopy erstellen lässt sind Umlaute nicht richtig kodiert, eine richtige Kodierung ist jedoch erforderlich wenn man das Logfile weiter verarbeiten möchte.
EDIT : Das selbe Problem ist mir jetzt auch bei DIR und TREE aufgefallen

Lösung :
Bestimmt gibt es hier viele Wege um dieses Problem zu lösen ich habe micht mit dieser Funktion beholfen :

Function ReplaceSonder(Line)

Line = Replace(Line,Chr(142),"Ä")
Line = Replace(Line,Chr(132),"ä")
Line = Replace(Line,Chr(154),"Ü")
Line = Replace(Line,Chr(129),"ü")
Line = Replace(Line,Chr(153),"Ö")
Line = Replace(Line,Chr(148),"ö")
Line = Replace(Line,Chr(225),"ß")

ReplaceSonder = Line
End Function


Sollten dennoch noch Zeichen in dem Logfile stehen die nicht richtig dargestellt werden kann der CharacterSet mit z.B. ASC("@") ermittelt und die Function nach belieben erweitert werden.

“Das einzig sichere System müsste ausgeschaltet, in einem versiegelten und von Stahlbeton ummantelten Raum und von bewaffneten Schutztruppen umstellt sein.”
Gene Spafford (Sicherheitsexperte)