Enviar arquivos para "/"
This commit is contained in:
277
atua
Normal file
277
atua
Normal file
@@ -0,0 +1,277 @@
|
||||
#!/bin/bash
|
||||
# ┌──────────────────────────────────────────────────────────┐
|
||||
# │ Author: Bruno.Tosta │
|
||||
# │ Desc: Atualiza o SigERP e SigPDV │
|
||||
# └─────────────────────────────────────────────{ VARIAVEIS }┘
|
||||
VERSAO="6.3" SISTEMA=$(lsb_release -cs) V='×'
|
||||
REPOSITORIO='download.sigsolucoes.net.br/public/Tosta/ERP'
|
||||
VerificaInstalados(){
|
||||
[ -d '/usr/local/sigerp' ] && X='1' || X='0'
|
||||
[ -d '/usr/local/sigpdv' ] && Y='2' || Y='0'
|
||||
case "$X$Y" in
|
||||
10) Configurar '1'; MenuAtualizar;;
|
||||
02) Configurar '2'; MenuAtualizar;;
|
||||
12) MenuExecutar ;;
|
||||
00) MenuStatus 'NÃO HÁ'; exit
|
||||
esac
|
||||
}
|
||||
Configurar(){
|
||||
case "$1" in
|
||||
1) source <(wget -qO- "$REPOSITORIO/controle/config");;
|
||||
2) source <(wget -qO- "$REPOSITORIO/controle/config");;
|
||||
esac
|
||||
case "$SISTEMA" in
|
||||
'xenial') [ "$ATUALIZANDO" = 'sigerp' ] && exit 1 || unset PACOTES[0];;
|
||||
'bionic') S='0' ;;
|
||||
*) MenuStatus 'NÃO HOMOLOGADO'; exit ;;
|
||||
esac
|
||||
}
|
||||
# ┌──────────────────────────────────────────────────────────┐
|
||||
# └─────────────────────────────────────────────────{ MENUS }┘
|
||||
MenuExecutar(){
|
||||
clear; read -p "
|
||||
┌─ $SISTEMA ─────────────────────────────────────┐
|
||||
│ │
|
||||
│ 1 │ Atualizar o SigERP │
|
||||
│ 2 │ Atualizar o SigPDV │
|
||||
│ 0 │ Sair │
|
||||
│ │
|
||||
└──────────────────────────────────────── $VERSAO ─┘
|
||||
Escolha uma opção: " EXECUTAR && Executavel
|
||||
}
|
||||
MenuAtualizar(){
|
||||
clear; read -p "
|
||||
┌─ $TITULO ─ $MODULO ───────────────────────────────┐
|
||||
│ $V │
|
||||
│ 1 │ Atualizar com Backup │
|
||||
│ 2 │ Atualizar sem Backup │
|
||||
│ 3 │ Atualizar Pacotes │
|
||||
│ 4 │ Fazer backup da base │$BARRA
|
||||
│ 0 │ Sair │
|
||||
│ │
|
||||
└──────────────────────────────────────── $VERSAO ─┘
|
||||
Escolha uma opção: " ATUALIZAR && Atualizavel
|
||||
}
|
||||
MenuPacotes(){
|
||||
clear; echo " ┌─ PACOTES ─ $ATUALIZANDO ───────────────────────────┐
|
||||
│ $V │"
|
||||
for i in "${!PACOTES[@]}"; do
|
||||
printf " │ $((i + 1)) │ "${PACOTES[$i]}" │\n"
|
||||
done
|
||||
read -p " │ │
|
||||
└──────────────────────────────────────── $VERSAO ─┘
|
||||
Escolha uma opção: " EMPACOTAR && Empacotavel
|
||||
}
|
||||
MenuAtualizacao(){
|
||||
clear; read -p "
|
||||
┌───────────────── ATUALIZAR ──────────────────┐
|
||||
│ │
|
||||
│ Existe uma versão do ATUA mais recente │
|
||||
│ Deseja atualizar para a versão mais recente? │
|
||||
│ S/N │
|
||||
└──────────────────────────────────────── $VERSAO ─┘
|
||||
Escolha uma opção: " RESPOSTA
|
||||
}
|
||||
MenuSudo(){
|
||||
echo '
|
||||
┌────────────────── ATENCAO! ──────────────────┐
|
||||
│ │
|
||||
│ Necessário logar como usuário root │
|
||||
│ │
|
||||
└──────────────────────────────────────────────┘
|
||||
'; sudo su -s '/bin/bash' -c 'atua'
|
||||
}
|
||||
MenuStatus(){
|
||||
clear; echo "
|
||||
┌──────────────────────────────────────────────┐
|
||||
│ │
|
||||
│ $1 │
|
||||
│ │
|
||||
└──────────────────────────────────────────────┘
|
||||
"; sleep 1
|
||||
}
|
||||
# ┌──────────────────────────────────────────────────────────┐
|
||||
# └─────────────────────────────────────────────────{ OPCAO }┘
|
||||
Executavel(){
|
||||
case "$EXECUTAR" in
|
||||
1) Configurar '1'; MenuAtualizar ;;
|
||||
2) Configurar '2'; MenuAtualizar ;;
|
||||
0) MenuStatus 'SAINDO'; exit ;;
|
||||
*) MenuStatus 'INVALIDO'; MenuExecutar
|
||||
esac
|
||||
}
|
||||
Atualizavel(){
|
||||
case "$ATUALIZAR" in
|
||||
1) Identifica 'BACKUP'; Instalar ;;
|
||||
2) Instalar ;;
|
||||
3) MenuPacotes ;;
|
||||
4) Identifica 'BACKUP' ;;
|
||||
5) [[ "$ATUALIZANDO" = 'sigerp' ]] && {
|
||||
Identifica 'LEVANTAR'; ParaSistema; IniciaSistema
|
||||
} || { MenuStatus 'INVALIDO'; MenuExecutar
|
||||
} ;;
|
||||
0) MenuStatus 'SAINDO'; exit ;;
|
||||
*) MenuStatus 'INVALIDO'; MenuExecutar
|
||||
esac
|
||||
}
|
||||
Empacotavel(){
|
||||
for i in "${!PACOTES[@]}"; do
|
||||
CASE+="
|
||||
$i) APLICATIVO=\"${PACOTES[$i]}\"; InstalacaoPacote ;;"
|
||||
done
|
||||
eval "
|
||||
case \"$(($EMPACOTAR-1))\" in
|
||||
$CASE
|
||||
0) MenuStatus 'SAINDO'; exit ;;
|
||||
*) MenuStatus 'INVALIDO'; MenuExecutar ;;
|
||||
esac"
|
||||
}
|
||||
Instalar(){
|
||||
ParaSistema; VerificaATUA && PastaBackup && BuscaArquivo && VerificaSigEXT && Permissao && ApagaTemp; [ "$ATUALIZANDO" = 'sigpdv' ] && exit || Identifica 'LEVANTAR' && IniciaSistema
|
||||
}
|
||||
InstalacaoPacote(){
|
||||
VerificaATUA && BaixaArquivo && ApagaTemp; [ "$ATUALIZANDO" = 'sigpdv' ] && exit || ParaSistema; IniciaSistema
|
||||
}
|
||||
# ┌──────────────────────────────────────────────────────────┐
|
||||
# └──────────────────────────────────────────────────{ BASE }┘
|
||||
Identifica(){
|
||||
VerificaPasta
|
||||
for ((N=1; N <= "$QUANTIDADE"; N++)) do
|
||||
BASE=$(PGPASSWORD="$SENHA" psql -U "$USER" -l | awk '{ if ($3 == "'$USER'" && $1 != "template0" && $1 != "template1" && $1 != "'$USER'") print $1 }' | head -$(($N+B)) | tail -1)
|
||||
printf "\nQuantidade: $N/$QUANTIDADE \nBase: $BASE \n"
|
||||
case "$1" in
|
||||
BACKUP) PGPASSWORD="$SENHA" /usr/bin/pg_dump -h 'localhost' -p '5432' -U "$USER" --role "$USER" -F 'c' -b -v -T 'logs_logs' -T 'ir_attachment' -T 'logs_detalhe' -T 'ecf_exportar_osv_id_seq' -f "/backup/$BASE.$DATA.dump" -d "$BASE"
|
||||
;;
|
||||
LEVANTAR) sudo -u openerp 'openerp-server' -uall -d "$BASE" -c '/etc/openerp-server.conf' --stop-after-init
|
||||
;;
|
||||
esac
|
||||
printf "Completo: $BASE \n"
|
||||
done
|
||||
}
|
||||
# ┌──────────────────────────────────────────────────────────┐
|
||||
# └───────────────────────────────────────────────{ FUNCOES }┘
|
||||
ParaSistema(){
|
||||
[ "$ATUALIZANDO" = 'sigpdv' ] && killall 'python' || {
|
||||
service 'openerp-server' stop; /etc/init.d/openerp-server stop 2>'/dev/null' && echo 'OK' || killall 'openerp-server'
|
||||
}
|
||||
}
|
||||
IniciaSistema(){
|
||||
service 'openerp-server' start; /etc/init.d/openerp-server start
|
||||
}
|
||||
InstalaArquivo(){
|
||||
python 'setup.py' install
|
||||
}
|
||||
VerificaPasta(){
|
||||
mkdir -m 777 '/backup' 2>'/dev/null' && echo 'Pasta de backup criada' || echo 'Pasta de backup já existe'
|
||||
}
|
||||
PastaBackup(){
|
||||
VerificaPasta; cd "$LOCAL/" && tar cfvz "/backup/$ATUALIZANDO.$DATA.tar.gz" "$ATUALIZANDO"
|
||||
}
|
||||
VerificaATUA(){
|
||||
mkdir -m 777 '/tmp/ATUA' 2>'/dev/null' && echo 'Pasta de atualização criada!' || echo 'Pasta de atualização já existe!'
|
||||
}
|
||||
BaixaPacote(){
|
||||
cd '/tmp/ATUA' && pip install -r <(wget -qO- "$REPOSITORIO/controle/requirements") && echo 'Requisitos instalados' || echo 'Houve algum erros entre pacotes'
|
||||
}
|
||||
# ┌──────────────────────────────────────────────────────────┐
|
||||
# └─────────────────────────────────────────────{ DOWNLOADS }┘
|
||||
BuscaArquivo(){
|
||||
VerificaATUA
|
||||
for APLICATIVO in "${PACOTES[@]:$S}"; do
|
||||
BaixaArquivo
|
||||
done
|
||||
}
|
||||
BaixaArquivo(){
|
||||
BAIXAR=$(wget -qO- "$REPOSITORIO/controle/update" | grep -wi "$APLICATIVO" | cut -d"=" -f2)
|
||||
wget -q -O "/tmp/ATUA/$APLICATIVO-$BAIXAR.tar.gz" "$REPOSITORIO/$APLICATIVO/$APLICATIVO-$BAIXAR.tar.gz"
|
||||
ExtraiArquivo
|
||||
}
|
||||
ExtraiArquivo(){
|
||||
[ "$APLICATIVO" != "$ATUALIZANDO" ] && {
|
||||
cd '/tmp/ATUA/'; tar xfvz "$APLICATIVO-$BAIXAR.tar.gz"
|
||||
cd "$APLICATIVO-$BAIXAR"; InstalaArquivo &&
|
||||
echo "Instalação do $APLICATIVO-$BAIXAR efetuada com sucesso!"
|
||||
} || {
|
||||
mv "$LOCAL/$ATUALIZANDO/" "/tmp/ATUA/$ATUALIZANDO-old"
|
||||
cp "/tmp/ATUA/$APLICATIVO-$BAIXAR.tar.gz" "$LOCAL/"
|
||||
cd "$LOCAL/"; tar xfvz "$APLICATIVO-$BAIXAR.tar.gz"
|
||||
rm "$LOCAL/$APLICATIVO-$BAIXAR.tar.gz"
|
||||
echo "Extração dos arquivos do $APLICATIVO-$BAIXAR efetuada com sucesso!"
|
||||
}
|
||||
}
|
||||
Permissao(){
|
||||
for PERMISSAO in "${PERMISSOES[@]}"; do
|
||||
chmod -R 777 "$PERMISSAO"
|
||||
done; echo 'Permissões ajustadas!'
|
||||
}
|
||||
ApagaTemp(){
|
||||
cd '/'; rm -rf '/tmp/ATUA/' && echo 'Arquivos e pastas temporárias para a atualização deletados'
|
||||
}
|
||||
# ┌──────────────────────────────────────────────────────────┐
|
||||
# └───────────────────────────────────────────{ APP.CONFIGS }┘
|
||||
VerificaSigEXT(){
|
||||
mkdir "$LOCAL/sigext" 2>'/dev/null' && echo 'Pasta do SigEXT criada' || echo 'Pasta do SigEXT já existe'
|
||||
chmod 777 -R "$LOCAL/sigext"
|
||||
chown -R root:root "$LOCAL/sigext"
|
||||
BuscaSigEXT
|
||||
}
|
||||
BuscaSigEXT(){
|
||||
for N in 0 1; do
|
||||
APP="${APP[$N]}" _APP="${_APP[$N]}" __APP="${__APP[$N]}"; IndexarSigEXT
|
||||
done
|
||||
}
|
||||
IndexarSigEXT(){
|
||||
[ ! -e "$LOCAL/sigext/$__APP" ] && {
|
||||
echo "Arquivo $__APP no $ATUALIZANDO não existe, irei procurar!"
|
||||
cd "/tmp/ATUA/$ATUALIZANDO-old/$_APP"
|
||||
[ -e "$APP" ] && {
|
||||
cp "$APP" "$LOCAL/sigext/$__APP"
|
||||
chmod 777 "$LOCAL/sigext/$__APP"
|
||||
chown root:root "$LOCAL/sigext/$__APP"
|
||||
CriarAtalho
|
||||
} || {
|
||||
echo "Arquivo $__APP no $ATUALIZANDO não existe!"
|
||||
}
|
||||
} || {
|
||||
CriarAtalho
|
||||
}
|
||||
}
|
||||
CriarAtalho(){
|
||||
ln -s "$LOCAL/sigext/$__APP" "$LOCAL/$ATUALIZANDO/$_APP$APP" &&
|
||||
echo "Arquivo $__APP do $ATUALIZANDO teve seu atalho criado!"
|
||||
chmod 777 "$LOCAL/$ATUALIZANDO/$_APP$APP"
|
||||
chown $CHOWN:$CHOWN "$LOCAL/$ATUALIZANDO/$_APP$APP"
|
||||
}
|
||||
# ┌──────────────────────────────────────────────────────────┐
|
||||
# └─────────────────────────────────────────────{ ATUALIZAR }┘
|
||||
PerguntarAtualizar(){
|
||||
[ ! -e '/usr/local/bin/hub' ] && wget -q --show-progress -O '/usr/local/bin/hub' "$REPOSITORIO/controle/hub" && chmod 777 '/usr/local/bin/hub'
|
||||
SERVER=$(wget -qO- "$REPOSITORIO/controle/atua" | grep -oP 'VERSAO="\K[^"]+' | head -1)
|
||||
CLIENT=$(grep -oP 'VERSAO="\K[^"]+' '/usr/local/bin/atua' | head -1)
|
||||
[[ "$SERVER" = "$CLIENT" ]] && VerificaInstalados || { MenuAtualizacao
|
||||
while true; do
|
||||
case "$RESPOSTA" in
|
||||
S|Sim|s|sim) sudo su -s '/bin/bash' -c 'hub -A'; exit;;
|
||||
N|Nao|n|nao) MenuStatus 'SAINDO'; exit ;;
|
||||
*) MenuStatus 'INVALIDO'; MenuAtualizacao ;;
|
||||
esac
|
||||
done
|
||||
}
|
||||
}
|
||||
# ┌──────────────────────────────────────────────────────────┐
|
||||
# └─────────────────────────────────────────────{ PRINCIPAL }┘
|
||||
LOGFILE="/tmp/${0##*/}".log
|
||||
exec 1> >(tee -a "$LOGFILE"); exec 2>&1
|
||||
USUARIO=$(id -u); [ "$USUARIO" != '0' ] && MenuSudo || {
|
||||
[ -z "$1" ] && PerguntarAtualizar || {
|
||||
while [ -n "$1" ]; do
|
||||
case "$1" in
|
||||
-U|-u) sudo su -s '/bin/bash' -c 'hub -A'; exit;;
|
||||
-E|-e) Configurar '1'; MenuAtualizar ;;
|
||||
-P|-p) Configurar '2'; MenuAtualizar ;;
|
||||
*) MenuStatus 'INVALIDO'; MenuExecutar ;;
|
||||
esac
|
||||
done
|
||||
}
|
||||
}
|
||||
# └──────────────────────────────────────────────────────────┘
|
||||
Reference in New Issue
Block a user