Archiv

Artikel Tagged ‘script’

Windows Clients / Server zuverlässig rebooten

Ich wollte die Tage für einen Kunden einrichten, das sich seine Server zu fest definierten Zeitpunkten automatisch neustarten. Zuerst ging ich mit den Boardmitteln von Windows daran, was sich aber leider nicht als sehr zuverlässig herausstellte.

Die finale Lösung liegt nun in einem VB Script, welches nun zuverlässig die Server neustartet, ohne Probleme zu verursachen oder zusätzliche Software zu benötigen. Hier mal auch für euch das Script:

1
2
3
4
5
Set colOperatingSystems = GetObject("winmgmts:{(Shutdown)}").ExecQuery("Select * from Win32_OperatingSystem")
 
For Each objOperatingSystem in colOperatingSystems
ObjOperatingSystem.Win32Shutdown(2+4)
Next

Das Script habe ich auf Windows XP Pro, Server 2003, Server 2008, Vista Business sowie auf Windows 7 erfolgreich testen können. Nirgends musste ich Anpassungen vornehmen!

Embeded Systeme schonen – /var/log in den RAM

Ziel
Um die Zugriffe auf die Festplatte/Flashkarte zu minimieren, soll das Log-Verzeichnis /var/log beim Starten in den RAM geschrieben werden.
Beim ausschalten und reboot muss mit der HD syncronisiert werden. Weiter muss es möglich sein in bestimmten Abständen und auch manuell bzw. per Script zu syncronisieren.

Mit tmpfs lässt sich das alles recht komfortabel umsetzen.

Vorbereitung

Kernel

Im Kernel muss FS Unterstützung im RAM aktiviert sein.

Symbol: TMPFS

Location:
-> File Systems
   -> Pseudo Filesystems

Sync-Verzeichnis

Man muss ein Verzeichnis anlegen, in dass syncronisiert wird und aus dem beim Systemstart die Dateien in den RAM geladen werden.

mkdir /var/log.hd

fstab

Diese Zeile hinzufügen:

tmpfs    /var/log    tmpfs    size=100M    0 0

Wir mounten damit /var/log in einen reservierten Bereich des Arbeitsspeichers.

init-Scipt

Folgendes Script unter /etc/init.d/varlogfs speichern:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#!/bin/sh
 
PATH=/bin:/usr/bin:/sbin:/usr/sbin
TMPFS_DIR="/var/log/"
HDD_DIR="/var/log.hd/"
 
case $1 in
        start)
                echo "sync hdd to tmpfs.."
                /bin/cp -Rpv $HDD_DIR* $TMPFS_DIR
                echo "done."
                ;;
        sync)
                echo "sync tmpfs to hdd.."
                /bin/cp -Rpv $TMPFS_DIR* $HDD_DIR
                echo "done."
                ;;
        stop)
                echo "sync tmpfs to hdd.."
                /bin/cp -Rpv $TMPFS_DIR* $HDD_DIR
                echo "done."
                ;;
        *)
                echo $"usage: $0 {start|sync|stop}"
                exit 1
                ;;
esac
 
exit 0

Das init-Script sollte logischerweise vor allen Diensten gestartet werden, die nach /var/log schreiben. Außerdem muss es beim Herunterfahren am Schluss ausgeführt werden, um das das Dateisystem zu syncronisieren.

ln -s /etc/init.d/varlogfs /etc/rc2.d/S9varlogfs
ln -s /etc/init.d/varlogfs /etc/rc3.d/S9varlogfs
ln -s /etc/init.d/varlogfs /etc/rc5.d/S9varlogfs
ln -s /etc/init.d/varlogfs /etc/rc0.d/K99varlogfs
ln -s /etc/init.d/varlogfs /etc/rc1.d/K99varlogfs
ln -s /etc/init.d/varlogfs /etc/rc6.d/K99varlogfs

Unter Debian geht auch:

update-rc.d varlogfs defaults 9 99

Beim nächsten Neustart ist das Log-Verzeichnis im Arbeitsspeicher.

Manuell syncronisieren kann man mit:

/etc/init.d/varlogfs sync

Schnellere Updates über den WSUS 3.x

18. September 2008 Keine Kommentare

Wer schneller seine Updates von WSUS Server beziehen möchte, sollte sich folgendes Script ansehen:

?View Code KIXTART
1
2
3
4
5
6
7
8
9
10
11
; Sicherheitshalber den WSUS per Registry einmal eintragen
; Schritt 1:
; Setzen des WSUS Eintrages in die Registry
SHELL "regedit /s \\wsus-server\ClientReg\WSUS_Client.reg"
; Schritt 2:
; Schnelles Reporten an den WSUS Server initialisieren...
SHELL "wuauclt.exe /reportnow"
; Schritt 3:
; WSUS sofort nach Updates zum aktuellem Client befragen und
; diese sofort beziehen / downloaden...
SHELL "wuauclt.exe /detectnow"

Ich setze hier im Script zu allererst den Registriereintrag für den WSUS Server, das ist mir immer allemal lieber, als mich auf Cookies oder ähnliches zu verlassen.

Anschließend wird sofort ein Reporting an den WSUS Server ausgelöst, statt dies der “Willkür” des Clients zu überlassen, der aktuelle Patchstand des Clients wird also adhoc gesammelt und an den WSUS übertragen.

Im drittem Schritt wird geschaut, ob der WSUS Server Updates für den Client hat – und diese werden dann auch entsprechend der Richtlinien sofort geladen und installiert.

Das Script hat sich in der Praxis sehr bewährt, vor allem wenn viele Notebookbenutzer in der Domäne sind, welche ur ab und zu mal im Büro vorbeikommen und somit relativ schnell die Updates auf ihren Rechnern brauchen. Verbesserungsvorschläge sind natürlich immer willkommen!