Enviar arquivos para "/"

This commit is contained in:
2024-09-23 09:19:28 -03:00
commit a2c590ff41

277
atua Normal file
View 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
}
}
# └──────────────────────────────────────────────────────────┘