Archiv für 1. September 2014

Uptime von Windows Servern ermitteln

Unter Unix/Linux gibt es ja das schöne, altgediente uptime. Unter Windows gibt es kein Pendant dazu. Aber so kann man es auch einfach rauskriegen. uptime.cmd:

@echo off
REM
REM Dirk Dettmering
REM
net statistics server | find /I "since"

Gefunden habe ich es hier.

Bei Passwortänderungsscript den Aufruf aus der Shell-History raushalten

Für einen OPSI-Server habe ich ein kleines Script geschrieben, mit dem mit einem Aufruf die Paßwörter für das System selber, Samba und OPSI in einem Rutsch neu gesetzt werden kann. Bei Nutzung des OPSI-Server mit einer etwas größeren Zahl von Admins bzw. Paket-Zuweisern und Systemaufsetzern ist es ab und zu mal notwendig, daß auch ohne Root-Zugang für Zweite die Paßwörter in allen 3 Systembereichen durch Dritte neu gesetzt werden können:

/usr/local/bin/opsipasswd.sh:

#!/bin/bash
#
# Dirk Dettmering
#
# Script zur gleichzeitigen Aenderung des Passwortes eines Users fuer System, OPSI und Samba
# Beim Aufruf des Scriptes muss der Username und das gewuenschtes Paßwort uebergeben werden.
#
if [ "$2" == "" ]; then
    echo ""
    echo ""
    echo "           Ohne Parameter mag ich aber nicht! ;-) ..."
    echo ""
    echo "Dem Script muss Username und gewünschtes Paßwort übergeben werden"
    echo "Die Reihenfolge ist dabei nicht egal sondern immer erst Username und"
    echo "dann das Paßwort!"
    echo "Also bitte so: [sudo] opsipasswd.sh <username> <password>"
    echo "sudo ist erforderlich, wenn man das Script nicht als root-User aufruft!"
    echo ""
    exit 1
fi
WERBINICH=`whoami | id -u`
if [ "$WERBINICH" != "0" ]; then
    echo ""
    echo "                      Du kleiner Depp, du Depperter! "
    echo "     Muttu root sein oder das Script via sudo aufrufen, damit es funktioniert!"
    echo ""
    exit 1
fi
# System-Passwort setzen:
/usr/local/sbin/passwd.exp $1 $2 > /dev/null 2>&1
clear
    if [ $? -gt 0 ]; then
        echo "Achtung, das Neusetzen des System-Paßwortes war nicht erfolgreich!"
    fi
# Samba-Passwort setzen:
/usr/local/sbin/smbpasswd.exp $1 $2 > /dev/null 2>&1
clear
    if [ $? -gt 0 ]; then
        echo "Achtung, das Neusetzen des Samba-Paßwortes mit war nicht erfolgreich!"
    fi

/usr/bin/opsi-admin -d task setPcpatchPassword -u $1 -p $2
clear
if [ $? -gt 0 ]; then
    echo "Achtung, das Neusetzen des OPSI-Paßwortes war nicht erfolgreich!"
fi

/usr/local/sbin/smbpasswd.exp:

#!/usr/bin/expect -f
   set password [lindex $argv 1]
    spawn smbpasswd -a [lindex $argv 0]
    expect {
      -re "password:" {sleep 1; send "$password\r"; exp_continue}
     -re "password:" {sleep 1; send "$password\r";}
   }

Das Speichern des Scriptaufrufs in der History verhindere ich dann durch Setzen folgender Shellvariabelen in der /etc/bash.bashrc:

export HISTIGNORE="opsipasswd.sh *:passwd *:smbpasswd *"

 

Freigaben eines Fileservers aus der Registry sichern

Fileserver mit sehr vielen Freigaben verlieren bei uns manchmal einen Teil ihrer Freigaben nach einem Reboot (das betrifft vor allem das „wunderbare“ Produkt AiO von HP mit dem eigentlich für Fileserver optimierten Windows Server 2003 Storage!). Um die fehlenden Freigaben inklusive der Freigaberechte schnell wiederherzustellen, sollte man vor dem Reboot die Freigaben als Export der Registry sichern:

@echo off
 REM Freigaben aus der Registry auslesen
 REM
 REM Dirk Dettmering
 REM
 set datum=%date:~-4%-%date:~-7,2%-%date:~-10,2%
 set zeit=%time:~-11,2%h-%time:~-8,2%m
 set DateiName=%COMPUTERNAME%_Registry-FreigabenExport_%datum%_%zeit%.reg
 REM Export lokal ablegen:
 regedit /E C:\Tools\Backup\Freigaben\%DateiName% HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\LanmanServer\Shares
 REM Export auf Freigabe$ ablegen:
 regedit /E \\Fileserver\Freigabe$\BACKUPs\Freigaben_Registry-Exporte\%DateiName% HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\LanmanServer\Shares
 REM

Mit diesem Export lassen sich die Freigaben dann sehr einfach wieder herstellen:


@echo off
REM Freigaben wiederherstellen durch Import in die Registry
REM
REM Dirk Dettmering
REM
IF "%1"=="" GOTO Continue
	REM Daten der Freigaben importieren:
	regedit /S %1
	net stop server 2>nul
	net start server
	GOTO END
:Continue
ECHO
ECHO
ECHO Batchdatei wurde ohne Registryexport als Parameter aufgerufen!
ECHO
PAUSE
:END