Performancing Metrics

solutioncafe IT

Il System Architect è il punto di unione tra IT, processi aziendali, e esigenze del cliente

nov
2008
24

Dopo lo script visto nell’articolo precedente, eccone un altro un pochino più complesso, che restituisce giorno mese e anno retroattivi di un numero arbitrario di giorni rispetto alla data corrente. es. => $ sh subtractdays.sh 90

#!/bin/bash
# Source function library.
. /etc/rc.d/init.d/functions

OFFSET=$1

[ -z $OFFSET ] && OFFSET=0

eval `date "+DAY=%d; MONTH=%m; YEAR=%Y"`

DAY=${DAY#0}
MONTH=${MONTH#0}

if [ -n $OFFSET ] && [ $OFFSET -gt 0 ]
then
        for x in `seq 1 $OFFSET`
        do
                DAY=$((DAY - 1))

                if [ $DAY -lt 1 ]
                then
                        MONTH=$((MONTH - 1))
                        if [ $MONTH -lt 1 ]
                        then
                                YEAR=$((YEAR - 1))
                                MONTH=12
                        fi

                        typeset -a DAYS
                        i=0
                        for day in `cal $MONTH $YEAR | grep
-vE 'Su|Mo|Tu|We|Th|Fr|Sa|Jan|Feb|Mar|Apr|May|Jun|Jul|Aug
|Sep|Oct|Nov|Dec|$YEAR'`
                        do
                                i=`expr $i + 1`
                                DAYS[i]=$day
                        done

                        DAY=$((${DAYS[ ${#DAYS[*]}]}))
                        unset DAYS[*]
                fi
        done
fi

[ $DAY -lt 10 ] && DAY=0$DAY
[ $MONTH -lt 10 ] && MONTH=0$MONTH

echo $DAY $MONTH $YEAR
Tag:

Scrivi un commento

nov
2008
23

Dovendo automatizzare alcune operazioni di storicizzazione su server Linux, ho preparato questo script in grado di restiruire il mese e l’anno retroattivo di un numero arbitrario di mesi, a partire dalla data corrente.
Per utilizzarlo e’ sufficiente lanciare lo script indicando il numero di mesi che volete sottrarre come parametro. es. => $ sh subtractmonths.sh 2

#!/bin/bash

# Source function library.
. /etc/rc.d/init.d/functions

OFFSET=$1
MONTH=`date "+%m"`
YEAR=`date "+%Y"`

MONTH=${MONTH#0}

[ -z $OFFSET ] && OFFSET=0

if [ -n $OFFSET ] && [ $OFFSET -gt 0 ]
then
        for x in `seq 1 $OFFSET`
        do
                MONTH=$((MONTH - 1))

                if [ $MONTH -lt 1 ]
                then
                        YEAR=$(($YEAR - 1))
                        MONTH=12
                fi
        done
fi

[ $MONTH -lt 10 ] && MONTH=0$MONTH

echo $MONTH $YEAR
Tag:

Scrivi un commento

nov
2008
20

L’azienda per la quale lavoro è dotata di una infrastruttura Active Directory distribuita sul territorio.
Recentemente un domain controller (DC) di un uffico periferico ha mostrato alcuni errori e esperienze passate mi hanno indotto a pensare ad una possibile corruzione del database di Active Directory.
Normalmente i vari passaggi avrebbero previsto il boot in “Directory Service Restore Mode” (accesso ottenuto premendo F8 durante la fase di avvio) e l’uso di Ntdsutil per la verifica di integrità del database, ma in questo caso, fuori dai “normali” orari di lavoro in cui nell’uffico remoto non c’era nessuno che potesse aiutarmi, il solo accesso possibile restava Terminal Services.
Cercando una possibile scappatoia, mi sono ricordato di un vecchio documento dove avevo appuntato i parametri possibili del file “boot.ini”, ed ecco trovato il workaround.

1. Su “Esegui” digitate Mstsc /console
2. Inserite il FQDN o indirizzo IP del server remoto
3. Fate logon al DC utilizzando un utente di dominio
4. Su “Esegui” (DC) digitate notepad %HOMEDRIVE%boot.ini
5. Aggiungete la seguente stringa in fondo all’ultima riga del boot.ini

/SAFEBOOT:DSREPAIR

Ottenendo un risultato simile a questo:

[boot loader]
timeout=3
default=multi(0)disk(0)rdisk(0)partition(1)WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)WINDOWS=”Windows Server 2003 Standard x64 Edition” /noexecute=optout /fastdetect /SOS /SAFEBOOT:DSREPAIR

6. Riavviate il server
7. Ripetete i punti 1 e 2
8. Dopo la riconnessione, in “Safe Mode“, fate logon con un account per la modalità ripristino servizi directory (non un account di Active Directory) utilizzando la password inserita nel corso del processo di promozione del controller di dominio.
9. Aprite una console (cmd.exe) e digitate Ntdsutil + Invio
10. Digitate Files + Invio
11. Digitate Integrity , per verificare il database.
12. Al termine premete q + Invio per tornare al menu precedente
13. Premete ancora q + Invio per uscire da Ntdsutil.
14. Modificare il boot.ini rimuovendo la stringa aggiunta in precedenza
15. Riavviare il DC.

Molto spesso è sufficiente mettere il database offline ed eseguire la verifica di integrità appena descritta per risolvere buona parte dei problemi che possono verificarsi al database di AD.

Tag:

Scrivi un commento

Banner