Si tratta stavolta di far girare una shell funzionante su HP-UX in ambiente Sun Solaris versione 5.9.Ho buttato tutta la mattina per trovare i comandi corrispondenti ma con scarsi risultati.
Purtroppo alla fine sta Shell andrebbe riscritta con i comandi per Solaris ma non so proprio da dove cominciare,vi posto la Shell che attualmente gira su HP-UX
- Codice: Seleziona tutto
#!/usr/bin/ksh
############################################################################
#
# Input : No parameters
#
#
# --------------------------------------------------------------------------
DATA_FILE=`date '+%Y%m%d_%H%M%S'`
DATA_MESE_ANNO=`date '+%Y%m'`
DIR_START=/prova
LOG_FILE=/prova/CONTROLLO_FILE_${DATA_FILE}.log
cd $DIR_START
for NOME_FILE_IN in `ls -1 FlussoAvanzamento*`
do
#### CONTROLLO NAMING CONVENTION ########
## prova_YYYYMMDD.txt ############
NOME_FILE=`basename ${NOME_FILE_IN}`
IDX=`expr index $NOME_FILE _`
NOME_FILE_TIME=`expr substr $NOME_FILE $IDX 9`
NOME_FILE_TIME=`expr substr $NOME_FILE_TIME 2 8`
echo "VALIDATION CHECK NOME FILE : $NOME_FILE" | tee -a $LOG_FILE
CHECK=0
#### CHECK anno NUMERIC
X_ANNO=`expr substr $NOME_FILE_TIME 1 4`
echo $X_ANNO | grep -q -v "[^0-9]"
if [ $? -eq 0 ]
then
echo "Anno numerico $X_ANNO(OK)" | tee -a $LOG_FILE
#### CHECK ANNO
else
echo "Errore di validazione sul Nome File : Anno non valido ($X_ANNO)" | tee -a $LOG_FILE
CHECK=1
fi
X_MESE=`expr substr $NOME_FILE_TIME 5 2`
#### CHECK mese NUMERIC
echo $X_MESE | grep -q -v "[^0-9]"
if [ $? -eq 0 ]
then
echo "Mese numerico $X_MESE(OK)" | tee -a $LOG_FILE
#### CHECK MESE
if [ $X_MESE -gt 12 ]
then
echo "\nNOME DEL FILE $NOME_FILE NON VALIDO ! MESE $X_MESE NON CORRETTO \n" | tee -a $LOG_FILE
CHECK=1
fi
else
echo "Errore di validazione sul Nome File : Mese non valido ($X_MESE)" | tee -a $LOG_FILE
CHECK=1
fi
X_GIORNO=`expr substr $NOME_FILE_TIME 7 2`
#### CHECK giorno NUMERIC
echo $X_GIORNO | grep -q -v "[^0-9]"
if [ $? -eq 0 ]
then
echo "GIORNO numerico $X_GIORNO (OK)" | tee -a $LOG_FILE
#### CHECK GIORNO
if [ $X_GIORNO -gt 31 ]
then
echo "\n NOME DEL FILE $NOME_FILE NON VALIDO ! GIORNO $X_GIORNO NON CORRETTO \n" | tee -a $LOG_FILE
CHECK=1
fi
else
echo "Errore di validazione sul Nome File : GIORNO non valido ($X_GIORNO)" | tee -a $LOG_FILE
CHECK=1
echo "\n"
fi
if [ $CHECK -eq 0 ]
then
X_ANNOMESE_FILE=`expr substr $NOME_FILE_TIME 1 6`
DIFF_DATE=`expr $DATA_MESE_ANNO - $X_ANNOMESE_FILE`
if [ $DIFF_DATE -eq 89 ]
then DIFF_DATE=1
echo "La Differenza Temporale \350 di ${DIFF_DATE}" | tee -a $LOG_FILE
else
echo "La Differenza Temporale \350 di ${DIFF_DATE} Mesi" | tee -a $LOG_FILE
fi
if [ $DIFF_DATE -gt 2 ]
then echo "File ${NOME_FILE} cancellato dalla DIR ${DIR_START}" | tee -a $LOG_FILE
rm $NOME_FILE
fi
# if [ $DIFF_DATE -eq 2 ]
# then echo "File ${NOME_FILE} cancellato dalla DIR ${DIR_START}" | tee -a $LOG_FILE
# rm $NOME_FILE
# fi
echo "\n******* Fine Elaborazione File ${NOME_FILE} **************\n" |tee -a $LOG_FILE
fi
done
Questa Shella altro non fa che,prendere tutti i file chiamati "FlussoAvanzamento e ne controlla la loro data di creazione per vedere che siano tutti numeri.Infine li cancella solo se sono più vecchi di due mesi.
Grazie mille per l'aiuto raga