contatore free

solutioncafe IT

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

mar
2010
5

Dovendo installare due firewall (Checkpoint) su hardware Sun, ho dovuto “rispolverare” le mie ormai sepolte conoscenze del sistema operativo Unix proprietario di casa Sun Microsystem (di recente acquisizione Oracle).
Devo dire, una volta terminato, che l’operazione non è poi stata così ardua, anzi il risultato ottenuto si presenta pulito e ordinato.
I server utilizzati sono due Netra T1 105 con processory UltraSPARC-II 440MHz (hardware di del 2002 o giù di lì) 512 MB di RAM 2 dischi da 18 GB, 2 schede di rete onboard, una scheda di rete “qfe” (Quad Fast Ethernet) e ovviamente NESSUN lettore cdrom.
Per coloro non avvezzi a questo tipo di hardware, è bene specificare che la famiglia Netra in genere viene fornita SENZA cdrom e non ha (nel senso che NON ESISTE) scheda grafica; l’output video viene inviato alle (2) “LOM” (Lights Out Manager) in pratica, delle porte seriali.
Per l’installazione, non potendo utilizzare la rete vicino ai server per il “Jumpstart” (installazione da rete), ho optato per un lettore CDROM collegato alla posta scsi esterna e una volta installato il sistema operativo minimale (poichè si tratta di firewall) avendo necessità di accedere ai packages necessari ad installare il resto dei servizi “essenziali”, ho realizzato tre immagini ISO dei cdrom (2 per l’OS + 1 per la patch “recommended”), che ho poi trasferto sui dischi interni servendomi del servizio FTP.
Avendo quindi necessità di “saltare” da un disco all’altro, alla ricerca di quanto necessario, per “montare” e “smontare” le ISO velocemente, senza dovermi preoccupare di quale immagine fosse in uso al momento, ho realizzato questo script, che permette di montare l’immagine al “volo” senza dovermi preoccupare di verificare se e quale delle tre fosse in uso.
Lo script è “essenziale”, ovviamente è possibile migliorarlo introducendo qualche controllo di errore, ma sicuramente svolge bene il proprio compito anche così.

La shell utilizzata è la Bash, su Solaris 8 non si tratta di un package installato di default, va quindi installata manualmente dal cdrom #2.

#!/usr/bin/bash

MPOINT=/mnt/iso
LOOPDEV=""
ISOFILE=$2

showhelp() {

   echo "Usage:
                $0 { isomount isofile }
                $0 { isoumount }
                $0 { status }"
   echo

   exit 1

  }

checkavail() {

        AVAIL=`df -k "$MPOINT" |grep "$MPOINT"`
  }

isoumount() {

        checkavail
        if [ -n "$AVAIL" ]
        then
                LOOPDEV=`df -k "$MPOINT" |grep "$MPOINT" | awk
 '{ print $1 }'`
                umount $MPOINT
                lofiadm -d $LOOPDEV
        fi

  }

isomount() {

        if [ ! -d $MPOINT ]
        then
                mkdir -p $MPOINT
        fi

        x=1

        while [ $x -eq 1 ]
        do
                checkavail

                if [ -z "$AVAIL" ]
                then
                        LOOPDEV=`lofiadm -a $ISOFILE`
                        mount -F hsfs -o ro $LOOPDEV $MPOINT
                        echo `df -k "$MPOINT" |grep "$MPOINT"`
        else
                        isoumount
                        x=$(( $x + 1 ))
                fi
                x=$(( $x - 1 ))
        done

  }

status() {

        STATUS=`df -k "$MPOINT" |grep "$MPOINT"`
        if [ -n "$STATUS" ]
        then
                echo "$STATUS"
        else
                echo "Nothing Mounted on $MPOINT"
        fi

  }

if [[ "$1" == "isomount" && -z "$2" ]]
then
        showhelp
fi

case "$1" in
  isomount)
    isomount
    ;;

  isoumount)
    isoumount
    ;;

  status)
    status
    ;;

  *)
    showhelp
esac

exit $?
Tag:

Scrivi un commento

feb
2009
23

Uno dei principali tool messi a disposizione all’amministratore di MySQL per effettuare il backup dei dati è mysqldump.
mysqldump è molto versatile, permette di effettuare backup in formato ASCII contenenti le istruzioni SQL dal quale è possibile ripristinare il database da zero oppure, apportandone semplici modifiche, ripristinare la singola tabella.
Un altro vantaggio dei backup creati con mysqldump è rappresentato dal fatto che possono essere ripristinati su piattaforme diverse dall’originale.
Di seguito ecco illustrato uno script per effettuare il backup di tutti i database MySql del vostro server Linux.

#!/bin/bash

ADMINUSER="backup"
ADMINPASS="password"
SERVERNAME=`uname -n`

MYSQL="$(which mysql)"
MYSQLDUMP="$(which mysqldump)"
CHOWN="$(which chown)"
CHMOD="$(which chmod)"
MUTT="$(which mutt)"
GZIP="$(which gzip)"

NOW=`date +%Y%m%d%H%M`
DUMPDIR=/opt/dumpdb
MAILINGLIST=mysql@vostrodominio.it

RETVAL=0

# SKIPPED BACKUP LIST
SKIP=""

[ ! -d $DUMPDIR ] && mkdir -p $DUMPDIR || :

$CHOWN root.root -R $DUMPDIR
$CHMOD 0600 $DUMPDIR

DBLIST="$($MYSQL -u $ADMINUSER -h $SERVERNAME -p$ADMINPASS
-Bse 'show databases')"

for db in $DBLIST
do
        skipdb=-1
        if [ "$SKIP" != "" ]
        then
                for i in $SKIP
                do
                        [ "$db" == "$i" ] && skipdb=1 || :
                done
        fi

        if [ "$skipdb" == "-1" ]
        then
                FILE="$DUMPDIR/$db.sql.$SERVERNAME.$NOW.gz"
                $MYSQLDUMP -u $ADMINUSER -h $SERVERNAME
-p$ADMINPASS $db | $GZIP -9 > $FILE
                RETVAL=$?
                if [ $RETVAL -eq 0 ]
                then
                 # Cancella i file con data superiore a 7 GG
                 find $DUMPDIR -name $db.sql.$SERVERNAME.*
-mtime +7 \! -type d -exec rm -f {} \;

                        $MUTT -s "Dump database $db on
$SERVERNAME --> OK" -a $FILE $MAILINGLIST < /dev/null
                else
                        $MUTT -s "Dump database $db on
$SERVERNAME --> FALLITO"  $MAILINGLIST < /dev/null
                fi
        fi
done
Tag:

Scrivi un commento

feb
2009
20

Per mantenere la directory log pulita, avendo cura di cancellare solo i files ritenuti obsoleti dopo il periodo di ritenzione da voi stabilito (es. 15 giorni), potete pianificare l’esecuzione giornaliera del seguente comando.

$ find /var/log -mtime +15 \! -type d -exec rm -f {} \;
Tag:

Scrivi un commento

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

set
2008
30

Se volete conoscere quali porte sono aperte sul vostro server Linux,
eseguite:

$ lsof -i -n

oppure solo le porte TCP:

$ lsof -i TCP -n

oppure solo le porte UDP:

$ lsof -i UDP -n
Tag:

Commenti (1)

Banner