Orsyp $Universe estrarre automaticamente le attività eseguite dagli operatori

Scenario:

Un giorno il dirigente d'area mi disse che che per far fronte ad un progetto locale avrei dovuto contare tutte le attività non pianificate che venivano richieste di giorno in giorno e compilare un report da inviare via mail distinguendo tra oggetti singoli e oggetti multpli (Uproc e Sessioni)

Dato che non mi andava di perdere ogni giorno 10-15 minuti buoni e sopratutto non avevo voglia di acquistare un pallottoliere appositamente ho deciso che l'attività in questione poteva  doveva essere automatizzata.

Soluzione:

Tutte le attività (automatiche e non) vengono loggate in apposito file chiamato uxiotrns.log, su ogni riga del log c'è la data in cui esso e creato, quindi per trovare tutte le attività di oggi basta eseguire

cat /orsyp/UNIV50/exp/log/uxiotrns.log | grep $(date +%Y%m%d) > attivita_svolte_oggi.txt

Ora nel file delle attività giornaliere dobbiamo cercare quelle effettuate dagli operatori, dato che lo standard prevede che ogni operatore abbia un suo nome utente, dobbiamo creare un array con la lista degli operatori (in realtà li ho scritti per esteso con un pipe di mezzo perchè era troppo antipigro fare l'array, ma l'idea di base era quella) dopodichè, distinguere il tipo di oggetto (uproc o sessione) e il tipo di attività (mi interessano solo le sottomissioni ovvero "create lpr" ) e a quel punto è quasi fatto

set -A nomisessioni $(cat attivita_svolte_oggi.txt | grep 'CREATE LPR' | sed 's/utente/xxxxxxxxxxxx /g' | grep -v '\[ ' | grep -i -E 'operatore1|operatore2|operatore3|operatore4|' | awk '{print $18}' | cut -c 2-11)
set -A nomiuproc $(cat attivita_svolte_oggi.txt | grep 'CREATE LPR' | sed 's/utente/xxxxxxxxxxxx /g' | grep '\[ ' | grep -i -E 'operatore1|operatore2|operatore3' | awk '{print $19}' | cut -c 5-14)
echo "le uproc eseguite manualmente sono le seguenti ${nomiuproc[@]}"
echo "le sessioni eseguite manualmente sono le seguenti ${nomisessioni[@]}"
let conto=0
let numero=1
let contouproc=0
let contatoretotaleuproc=0

echo Numero di uproc sottomesse il  $(date +%Y%m%d) ${#nomiuproc[*]}
echo Numero di sessioni sottomesse il  $(date +%Y%m%d) ${#nomisessioni[*]}
while (( $conto < ${#nomisessioni[*]} )); do
nomesessione=${nomisessioni[conto]}

NUTOT=$(cat attivita_di_oggi.txt | grep 'CREATE LPR' | grep -i -E -c 'operatore1|operatore2....etc)
NUPROC=$(cat attivita_di_oggi.txt | grep 'CREATE LPR' | grep '\[ ' | grep -i -E -c 'operatore1|operatore2....etc')

let NUSES=$NUTOT-NUPROC
let TOTALE=$contatoretotaleuproc+$NUPROC
echo "In data $oggi sono state sottomessi $NUTOT oggetti di cui $NUPROC uproc e $NUSES sessioni ; le sessioni contenevano un totale di $contatoretotaleuproc uproc. Il totale degli oggetti sottomessi è di $TOTALE oggetti"

echo  $(date +%Y%m%d) $NUPROC $NUSES $TOTALE >> report.csv

una volta esportate le variabili file non resta che pianificare una mail automatica in crontab che invia in allegato il report prodotto.  








Commenti