Windows: Uptime anzeigen

Will man sich nur die Startzeit des Systems anzeigen lassen, tippt man in der Commandline einfach ’starttime‘ ein.
Kein Schnick, kein Schnack, kein Taskmanager usw.

Ich habe mir jetzt folgendes Batch erstellt und in C:\Windows\System32\EigeneBatches gespeichert:

@echo off
:: Autor:            Peter Maier
:: Datum:            17.06.2016
:: Dateiname:        starttime.bat
:: Beschreibung:    Zeigt die Startzeit eines PCs an. 
:: Verwendung:        cmd --> starttime
:: Abhängigkeiten:    Bordmittel
:: Quelle:             http://www.psteiner.com/2013/05/windows-uptime.html
::#######################################################
:: Variablen
:: Funktionen
:: Eigentliches Script
:: englisches Windows
:: for /f "tokens=1,2,*" %%i in ('net statistics workstation ^| find "since"') do @echo %COMPUTERNAME% up since %%k
::deutsches Windows
for /f "tokens=1,2,*" %%i in ('net statistics workstation ^| find "seit"') do @echo %%k

Ich habe den ursprünglichen Teil für ein englisches Windows mal drin gelassen. Sollte es nicht funktionieren, muss man ggfs. einfach mal ’net statistics workstation‘ auf der Kommandozeile ausführen.
Dann hat man schon mal die Info, welche Informationen es hier gibt.
Im deutschen Text steht in der Zeile z.B.

Statistik seit 22/06/2016 13:56:21

Wenn man es sich in der System32 ablegt oder eine PATH Variable auf das passende Verzeichnis setzt, kann man nun einfach ’starttime‘ eingeben und bekomt die gewünschte Info.

Windows: Chrome Icon auf „Gold“ umstellen

Wem das normale Icon von Googels Chrome Browser zu langweilig wird, sollte sich etwas Luxus gönnen 🙂

Man kann das Icon für Chrome ohne zusätzlichen Tools ändern.Chrome Programm Icons

 

 

 

Dazu muss man sich nur eine Verknüpfung zum Browser anlegen oder die vorhandene Verknüpfung mit der rechten Maustaste anklicken:
Chrome Eigenschaften

 

 

 

 

 

 

 

 

 

 

 

Dor klickt man jetzt auf „Anderes Symbol …“ und erhält folgende Ansicht:
Chrome Icons

 

 

 

 

 

 

 

Neben dem „normalen“ Icon sieht man jetzt auch das „goldene“. 🙂

Einfach das neue Symbol auswählen und zweimal  mit OK die Fenster schließen.

Diese Einstellung dient natürlich lediglich „kosmetischen“ Zwecken und schaltet KEINE goldenen Features frei. 🙂

Linux: Ein bestimmtes Wort in Dateien finden

Das Problem:
Jemand suicht auf seinem Linux-System einige Dateien, die ein bestimmtes Wort enthalten. Es geht also um die Suche nach einem Wort in verschiedenen Dateien auf dem System – nicht um Dateinamen.

Die Lösung:
Da kann mit Bordmitteln gearbeitet werden. Mit grep kommt man da ziemlich schnell ans Ziel:

grep -nrw ‚/Dateipfad/‘ -e „Suchbegriff“

Zur Erklärung:
Was macht „grep“? Hier die Erklärung aus der Ubuntu Manpage:

BESCHREIBUNG

grep sucht in den angegebenen DATEIen (oder der  Standardeingabe, wenn keine  Dateien oder ein einzelner Trenn-/Bindestrich (-) als Dateiname  angegeben  wurde) nach Zeilen, die auf das MUSTER passen. Per Voreinstellung gibt grep die passenden Zeilen aus.

Zu den Parametern:
Ich verwende ’nrw‘, weil ich mir als Eselsbrücke das Bundesland merke 🙂
-n   gibt die Zeilennummer an
-r   (oder auch -R) rekursive Sucht (alle Unterordner werden mit durchsucht)
-w   es muss das ganze Wort gefunden werden

-s   suppress – unterdrückt alle Fehlermeldungen für gescheiterte Dateizugriffe, z:B. wegen fehlender Berechtigungen
Das kann die Ausgabe eventuell sehr viel übersichtlicher machen.

Mit den Optionen ‚-include‘ und ‚-exclude‘ kann man die Suche dann noch verfeinern.

Beispiel:
Ich suche nur *.txt und *.sh Dateien, in denen sich der Autor ‚Bikerpete‘ in den Kommentaren verewigt hat:
grep -include=\*.{txt,sh} -nrw /scripts/ -e „Bikerpete“

Jetzt finde ich im Verzeichnis /scripts alle .txt und .sh files mit dem gesuchten Muster. Sind dann z.B. .h oder .doc Dateien vorhanden, werden diese bei der Ausgabe ignoriert.

Weitere Optionen findet man, wenn man sich die Manpages mit ‚man grep‘ anzeigen läßt.

 

Quelle: Stack Overflow

Linux: Plattenplatz überwachen ohne Nagios/Icinga

Manchmal benötigt man eine Benachrichtigung über den Plattenplatz, ohne ein großes Monitoring Tool wie Nagios/Icinga zur Verfügung zu haben.
Im konkreten Fall war es eine Linux-Appliance, die nach und nach die Systemplatte vollgeschrieben hat.
Leider war hier Icinga nicht nutzbar, da man auf dem System kein snmpd oder die Nagios Clients installieren konnte.

Lösung:
Auf dem Server (Debian) konnte der Konsolen-Mailer „mail“ installiert werden.

  1. Falls nicht schon vorhanden, den ‚mail‘ Konsolenclient installieren
    apt-get install mailutils
  2.  Exim konfigurieren, damit die Mails auch ausserhalb des Systems empfangen werden können:
    dpkg-reconfigure exim4-config
  3. Jetzt benötigen wir noch ein kleines Script:
    vi diskmailer
    Und dann folgenden Text einfügen:

    #!/bin/bash
    CURRENT=$(df / | grep / | awk '{ print $5}' | sed 's/%//g')
    THRESHOLD=90
    
    if [ "$CURRENT" -gt "$THRESHOLD" ] ; then
        mail -s 'Disk Space Alert' mailid@domainname.com << EOF
    Der Plattenplatz deiner root Partition läuft voll. Verwendet: $CURRENT%
    EOF
    fi

    Erklärung:

    Mit CURRENT und TRESHOLD werden zwei Variablen erzeugt, bzw. gesetzt.
    Bevor man das Script einsetzt, kann man die Funktion für die Variable CURRENT überprüfen, in dem man den Befehl in den Klammern in der Shell absetzt:

    df / | grep / | awk '{ print $5}' | sed 's/%//g'

    Dabei sollte jetzt eine ganze Zahl gezeigt werden. Das sind die belegten Prozent der root Partition ‚/‘
    Man kann natürlich auch andere Partitionen so überwachen.
    Mit THRESHOLD gibt man die Warnschwelle an, ab der eine Mail gesendet werden soll. Die Zahl entspricht der belegten Prozent der Partition. Also 90 für eine 90% volle Partition.

    Mit der ‚if‘-Bedingung wird jetzt geprüft, ob die Warnschwelle erreicht wurde:

    if [ "$CURRENT" -gt "$THRESHOLD" ] ; then

    Also wenn der Wert für CURRENT größer ist (-gt) als der Wert für THRESHOLD, dann führe den Mail-Teil aus.
    Der weitere Teil des Scripts ist mehr oder weniger selbsterklärend. Dort wird dann der Betreff (Subject), der Empfänger und der Inhalt der Mail angegeben.

  4. Das Script kann man jetzt z.B. nach /etc/cron.daily legen.
    Nicht vergessen:
    Mit ‚chmod +x‘ ausführbar machen und keine Endung wie ‚.sh‘ in dem Verzeichnis verwenden.
  5. Alternativ kann man das Script auch woanders ablegen und als cronjob laufen lassen.

Hoffe es hilft …

Script-Quelle: linuxjournal

Logrotate für Windows

Das Problem:
Auf einem Windows Server erzeugt eine Software diverse Logfiles. Ab einer Größe über 10 MB bekommt der Systembetreuer eine Mail, dass die Datei zu groß wird. Dieses Logfile hat aber nur informativen Charakter und muss nicht aufgehoben werden.
Daher kann man es im Prinzip auf einfach löschen und neu erstellen.

Die Lösung wäre unter Linux einfach : Logrotate

Nach etwas Sucherei bin ich zunächst auf logwot8 gestoßen.
Was mich an diesem Tool allerdings stört ist, dass man da im Hintergrund ein Cygwin laufen hat. Ist mir für ein paar Logfiles zu viel Overkill 🙂

Umgesetzt habe ich das Ganze dann mit LogRotateWin.

Beschreibung:
„Eine Windows Implementierung des logrotate Tools, welches es auf Linux Platformen gibt. Das Ziel ist es die gleichen Kommandozeilenparameter wie die Linux Version zu verwenden.“

Für die Parameter schaut man am besten ins Wiki

Ich habe das bei uns jetzt so umgesetzt:

1. Download Logrotate
https://sourceforge.net/projects/logrotatewin/
https://sourceforge.net/p/logrotatewin/wiki/LogRotate/
2. Installation auf einen anderen PC – wir brauchen auf dem Server nur den Programmordner Logrotate, der unter C:\Program Files (x86) erstellt wird.
Deswegen führe ich die Installation auf einem anderen Rechner durch und kopiere das Verzeichnis.
Beim Test gab es Probleme mit den Berechtigungen, wenn das Programm unter C:\Program Files (x86)\LogRotate ausgeführt wird.
Ggfs. kann man das auch mit einem Tool extrahieren.

3. Auf dem Server das Feature .NET Framework 3.5 installieren, falls das nicht schon drauf ist.

4. Den gesamten Ordner „Logrotate“ nach „D:“ kopieren (bei diesem Server habe ich das mal auf D: gemacht).

5. Ein leeres Textfile mit dem Namen logrotate.status (ohne .txt !) anlegen. Und zwar direkt im Stammverzeichnis. Bei mir also D:\logrotate.status

6. Im Verzeichnis Logrotate\Content ein conf-File (z.B. schedule.conf) für das Logfile anlegen.
Inhalt der schedule.conf:
##########################
D:\Anwendungsname\logs\schedule.log {
rotate 5
size 10M
}
#########################

Erklärung:
Bei einer Größe von 10MB wird das Logfile gepackt und umbenannt nach „schedule.log.1.gz“
Das Ganze wird dann für 5 Versionen vorgehalten und dann wieder überschrieben.

7. In der Aufgabenplanung (Task Scheduler) einen neuen Job anlegen
Name: logrotate-schedule
Triggers: Daily 06:00
Actions: Start a program D:\LogRotate\logrotate.exe D:\LogRotate\Content\schedule.conf
Conditions:
Settings:

Besonderheiten für den Task:
„Run whether user is logged on or not“ und „Run with highest privileges“

Jetzt kümmert sich das System selbst um die Logs 🙂

Bevor man das Ganze in der Aufgabenplanung laufen lässt, sollte man das mal in der CMD (als Administrator) ausprobieren und schauen, ob man Fehlermeldungen sieht.

 

 

 

 

 

nur ein Spielplatz …