sexta-feira, 26 de março de 2010

Script de Atualização do Logix Totvstec

A pedido do nosso amigo Caio estou postando aqui um script para a atualização da rpo do logix em producação – Online.
Ja sabemos que com o totvstec não é possivel fazer uma atualização da rpo on-line, porem com esse escript é possivel isso, lembrando que esse script foi escrito para o ambiente onde trabalho, então é preciso fazer a alteração de acordo com o ambiente de cada um. Peço a todos que prestem muita atenção e façam testes antes de colocar esses script em produção, pois pode parar o sistema.
Grande Abraço Caio, e use com cuidado, qualquer duvida estou a disposição.
#!/bin/bash
#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
# Amilcar de Jesus Moreti         @
# E-Mail - ajmoreti@yahoo.com.br  @
# MsN - acmoreti@msn.com          @
#          @
#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
#********************************************************************************
# Objetivo : Atualizar RPO com o Sistema em Producao                                              *
# Para atualizar programas em um sistema em producao, recomenda-se criar dois ambientes no arquivo*
# de configuracao (totvsappserver.ini) e posteriormente dois ambientes de trabalho na Ferramenta  *
# de desenvolvimento IDE.                                                                         *
#********************************************************************************
# Estrutura do diretorio para armazenamento das RPO's
# /totvs/apo/logix/aaaammdd_n
#
# Onde:
# dd - dia em que o RPO sera atualizado
# mm - mes que que o RPO sera atualizado
# aaaa - ano em que o RPO sera atualizado
# n - sequencia de atualizado
#
dDate="`date +%Y%m%d_%H`"
sTotvs="/totvs"
sTotvsTst="/totvs_tst"
sOrigDirApo="$sTotvsTst/apo/logix"
sOrigApo="$sOrigDirApo/lgxp102.rpo"
sDestDirApo="$sTotvs/apo/logix"
sDestDateApo="$sDestDirApo/$dDate"
sEnvironment="logix102"
sTotvsDirBin="$sTotvs/bin/appserver"
sTotvsIni="$sTotvsDirBin/totvsappserver.ini"
nVerVg=`df -P $sTotvs|sed 1d|awk '{print $5}'|awk -F% '{print $1}'`
if [ $nVerVg -ge 80 ]
then
        echo "Antes de atualizar a RPO por favor eliminar RPO's Antigas"
        echo "CUIDADO!!!"
        echo "NUNCA ELIMINE O PRIMEIRO ARQUIVO"
        for i in `ls -t $sDestDirApo`
        do
                echo "Eliminar a RPO $i ?"
                read sConfir
                if test $sConfir == y
                then
                rm -r -i $sDestDirApo/$i
                fi
        done
fi
echo "Fazer a copia da nova RPO de producao?"
read sConfirma
if test $sConfirma == "y"
then
        if test -d $sDestDateApo
        then
                echo "*** ATENCAO ***"
                echo "O diretorio SourcePath ja existe"
                echo "Isso significa que voce ja fez uma atualizacao nos ultimos 60 minutos"
                echo "Voce deseja criar uma nova SourcePath ?"
                read sConfirma
                if test $sConfirma == "y"
                then
                        dDate=`date +%Y%m%d_%H%M`
                        sDestDateApo=$sDestDirApo/$dDate
                        mkdir -p $sDestDateApo
                        cp $sOrigApo $sDestDateApo
                        sConf=$?
                        if test $sConf == 0; then
                                echo "Copia de RPO foi gerada com sucesso!!!"
                        fi
                fi
        else
                mkdir -p $sDestDateApo
                cp $sOrigApo $sDestDateApo
                sConf=$?
                if test $sConf == 0; then
                        echo "Copia de RPO foi gerada com sucesso!!!"
                fi
        fi
fi
echo ""
echo "O Arquivo totvsappserver.ini vai ser alterado para o acesso a RPO atualizada"
echo "Confirma a Operacao?"
read sConfirma
sDestDirApo="\/totvs\/apo\/logix"
sDestDateApo="$sDestDirApo\/$dDate"
sTmpFile="/tmp/totvsappserver.ini"
if test $sConfirma == "y"; then
        mv $sTotvsIni $sTmpFile
        sed -e '3s/.*/sourcepath='${sDestDateApo}'/' $sTmpFile > $sTotvsIni
        rm $sTmpFile
        mv $sTotvsIni $sTmpFile
        sed -e '17s/.*/sourcepath='${sDestDateApo}'/' $sTmpFile > $sTotvsIni
fi
Algumas observações a serem consideradas, para a logica desse script funcionar, obrigatoriamente tem que haver uma base de teste.
A primeira parte do script, verifico a tamanho da file system, para ver se não esta cheia, é preciso ficar atento, pois no meu ambiente trabalho com Volume Logico.
Abraços a todos.

Nenhum comentário:

Postar um comentário