Como Formatar arquivo de log, com textos alinhados em colunas fixas?

1. Como Formatar arquivo de log, com textos alinhados em colunas fixas?

Luiz Carlos
luizcarlos18rj

(usa Suse)

Enviado em 04/06/2018 - 08:39h

Bom dia a todos.

Meu problema é sobre meu script de backup, já o tenho funcional e todos os dias gera um arquivo de log ( mas com extensão .txt não fiz questão de ser .log ), que me dá informações sobre o "pronto" do backup, tamanho das pastas, horários de conclusão, capacidade do disco e capacidade para novos backups baseado no tamanho do disco / tamanho pasta .

Tudo flui normalmente, porém eu queria formatar meu arquivo de log para ficar visualmente mais profissional e bonito, mas não tenho conhecimento das ferramentas de formatação de texto para shell script e por isso peço a ajuda de vcs.

Vou mostrar respectivamente como está meu arquivo .sh, que faz o backup, meu arquivo de log gerado atualmente e por fim, como eu gostaria que ficasse formatado visualmente esse arquivo para que vcs possam me ajudar, meu objetivo é deixar um "esqueleto", um layout ou "pagina mestra" já pré-formatada e as variáveis gerassem valores nessas lacunas das colunas do relatório , já centralizada e preenchendo uniformemente todo o espaço.

1 - Script de backup


########## DECLARAÇÃO DE VARIÁVEIS #############

pasta=bkp$(date +%d%m%y)

notes=bkpNotes$(date +%d%m%y)

redeadm=bkpRedeAdm$(date +%d%m%y)

web=bkpWeb$(date +%d%m%y)

web2=bkpWeb2$(date +%d%m%y)

orcas=bkpOrcas$(date +%d%m%y)

quantum=bkpQuantum$(date +%d%m%y)

DATA=`date +%w`

########## DECLARAÇÃO DE PROCEDIMENTOS / FUNÇÕES #############

prepara_diretorios(){
cd /root/backup
mkdir $pasta
cd $pasta
mkdir $notes
mkdir $redeadm &&
touch /root/backup/$pasta/$redeadm/scp_erros.txt
mkdir $web
mkdir $web2
mkdir $orcas
mkdir $quantum
cd /root/backup
}

log_controle_cabecalho(){

echo >> /root/backup/controle.txt

data_titulo=$(date +%d/%m/%y)

echo "*******************************************************" >> /root/backup/controle.txt
echo "******* | PROCESSO DE BACKUP DOS SERVIDORES | *******" >> /root/backup/controle.txt
echo "******* | $data_titulo | *******" >> /root/backup/controle.txt
echo "*******************************************************" >> /root/backup/controle.txt
echo " " >> /root/backup/controle.txt
echo "Início da criação de pasta de backup às: `date +%A\ %d/%m/%Y\ %T` " >> /root/backup/controle.txt
echo >> /root/backup/controle.txt
}

calcula_becapes_antes(){

uso=`df -h | grep sdb | awk '{ print $5}' | cut -d'%' -f1`
pasta_excluir=`ls -1ltr | grep -m 1 bkp | awk '{ print $NF}'`

if [ $uso -ge 70 ]; then
echo "-----------------------------------------------" >> /root/backup/controle.txt
echo "DISCO CHEIO!!! Excluindo o becape mais antigo." >> /root/backup/controle.txt
rm -rf $pasta_excluir
echo "Diretório excluido: $pasta_excluir" >> /root/backup/controle.txt
echo "-----------------------------------------------" >> /root/backup/controle.txt
fi
}

backup_rede(){

scp_quantum(){
scp -r root@10.3.48.202:/home/backup /root/backup/$pasta/$quantum
echo "Finalização da pasta $quantum às: `date +%A\ %d/%m/%Y\ %T`" >> /root/backup/controle.txt
echo "Tamanho da pasta: `du -hs /root/backup/$pasta/$quantum | cut -f1`" >> /root/backup/controle.txt
echo >> /root/backup/controle.txt
}

scp_web2(){
scp -r root@10.3.48.3:/opt/lampp /root/backup/$pasta/$web2
scp -r root@10.3.48.3:/opt/lampp/htdocs/backup_drupal_casop_interno /root/backup/$pasta/$web2
echo "Finalização da pasta $web2 às: `date +%A\ %d/%m/%Y\ %T`" >> /root/backup/controle.txt
echo "Tamanho da pasta: `du -hs /root/backup/$pasta/$web2 | cut -f1`" >> /root/backup/controle.txt
echo >> /root/backup/controle.txt
}

scp_web(){
scp -r root@10.3.48.5:/var/lib/mysql /root/backup/$pasta/$web
scp -r root@10.3.48.5:/srv /root/backup/$pasta/$web
echo "Finalização da pasta $web às: `date +%A\ %d/%m/%Y\ %T` " >> /root/backup/controle.txt
echo "Tamanho da pasta: `du -hs /root/backup/$pasta/$web | cut -f1`" >> /root/backup/controle.txt
echo >> /root/backup/controle.txt
}

scp_orcas(){
scp -r root@10.3.48.4:/usr/local/Apache-Tomcat-8.0.9 /root/backup/$pasta/$orcas
scp -r root@10.3.48.4:/usr/local/CASOP /root/backup/$pasta/$orcas
scp -r root@10.3.48.4:/svn /root/backup/$pasta/$orcas
echo "Finalização da pasta $orcas às: `date +%A\ %d/%m/%Y\ %T`" >> /root/backup/controle.txt
echo "Tamanho da pasta: `du -hs /root/backup/$pasta/$orcas | cut -f1`" >> /root/backup/controle.txt
echo >> /root/backup/controle.txt
}

scp_notes(){
#scp -r root@10.3.48.2:/local/notesdata /root/backup/$pasta/$notes
scp -r root@192.168.0.2:/local/notesdata /root/backup/$pasta/$notes || echo "Falha na cópia de notesdata" >> /root/backup/controle.txt
echo "Finalização da pasta $notes às: `date +%A\ %d/%m/%Y\ %T` " >> /root/backup/controle.txt
echo "Tamanho da pasta: `du -hs /root/backup/$pasta/$notes | cut -f1`" >> /root/backup/controle.txt
echo >> /root/backup/controle.txt
}

scp_redeadmin(){
scp -r root@10.3.48.13:/var/firebird /root/backup/$pasta/$redeadm
scp -r root@10.3.48.13:/home/VOL03 /root/backup/$pasta/$redeadm >> /root/backup/$pasta/$redeadm/scp_erros.txt 2>&1
echo "Finalização da cópia de VOL03 às: `date +%A\ %d/%m/%Y\ %T`" >> /root/backup/controle.txt
scp -r root@10.3.48.13:/home/VOL02 /root/backup/$pasta/$redeadm >> /root/backup/$pasta/$redeadm/scp_erros.txt 2>&1
echo "Finalização da cópia de VOL02 às: `date +%A\ %d/%m/%Y\ %T`" >> /root/backup/controle.txt
scp -r root@10.3.48.13:/home/VOL01 /root/backup/$pasta/$redeadm >> /root/backup/$pasta/$redeadm/scp_erros.txt 2>&1
echo "Finalização da cópia de VOL01 às: `date +%A\ %d/%m/%Y\ %T`" >> /root/backup/controle.txt
#scp -r root@192.168.0.13:/var/firebird /root/backup/$pasta/$redeadm
#scp -r root@192.168.0.13:/home/VOL03 /root/backup/$pasta/$redeadm
#scp -r root@192.168.0.13:/home/VOL02 /root/backup/$pasta/$redeadm
#scp -r root@192.168.0.13:/home/VOL01 /root/backup/$pasta/$redeadm
echo "Finalização da pasta $redeadm às: `date +%A\ %d/%m/%Y\ %T`" >> /root/backup/controle.txt
echo "Tamanho da pasta: `du -hs /root/backup/$pasta/$redeadm | cut -f1`" >> /root/backup/controle.txt
echo >> /root/backup/controle.txt
}

scp_quantum
scp_web2
scp_web
scp_orcas
scp_notes
scp_redeadmin

}

log_controle_rodape(){

echo "::::::::::::::::::::::::::::::::::::: " >> /root/backup/controle.txt

echo "Término da criação de pasta de backup às: `date +%A\ %d/%m/%Y\ %T`" >> /root/backup/controle.txt

echo >> /root/backup/controle.txt

}

calcula_becapes_depois(){

tamanho_disco_H=` df -h | grep sdb | awk '{ print $2}'`
tamanho_disco=`df -m | grep sdb | awk '{ print $2}'`
tamanho_disco_aprox=$(echo "($tamanho_disco*1024)" | bc)

tamanho_pasta_H=`du -hs $pasta| cut -f1`
tamanho_pasta=`du -ms $pasta| cut -f1`

becapes_possiveis=$(echo "(($tamanho_disco)/$tamanho_pasta)" | bc)
pasta_excluir=`ls -1ltr | grep -m 1 bkp | awk '{ print $NF}'`

uso_H=`df -h | grep sdb | awk '{ print $5}'`
uso=`df -h | grep sdb | awk '{ print $5}' | cut -d'%' -f1`
usado_H=`df -h | grep sdb | awk '{ print $3}'`

livre_H=`df -h | grep sdb | awk '{ print $4}'`
livre=`df -m | grep sdb | awk '{ print $4}'`

qtdbecapes=$(echo "$livre/$tamanho_pasta" | bc)

if [ $qtdbecapes -eq 0 ]; then

echo "-----------------------------------------------" >> /root/backup/controle.txt
echo "DISCO CHEIO!!! Excluindo o becape mais antigo." >> /root/backup/controle.txt
rm -rf $pasta_excluir
echo "Diretório excluido: $pasta_excluir" >> /root/backup/controle.txt
echo "-----------------------------------------------" >> /root/backup/controle.txt
fi

##### Releitura de variáveis caso haja liberação de espaço ######

uso_H2=`df -h | grep sdb | awk '{ print $5}'`
usado_H2=`df -h | grep sdb | awk '{ print $3}'`
livre_H2=`df -h | grep sdb | awk '{ print $4}'`
livre2=`df -m | grep sdb | awk '{ print $4}'`
qtdbecapes2=$(echo "$livre2/$tamanho_pasta" | bc)
}

estatisticas(){

echo "Tamanho total do Volume: $tamanho_disco_H (Aprox $tamanho_disco_aprox GB)" >> /root/backup/controle.txt
echo "Tamanho total do becape atual: $tamanho_pasta_H" >> /root/backup/controle.txt
echo "Capacidade Total de becape(s)do Volume: $becapes_possiveis" >> /root/backup/controle.txt
echo "Espaço ocupado em Disco: $usado_H2($uso_H2)" >> /root/backup/controle.txt
echo "Espaço Livre: $livre_H2" >> /root/backup/controle.txt
echo "Quantidade possível de becapes restantes: $qtdbecapes2 " >> /root/backup/controle.txt
echo "(Cálculo em função do tamanho atual da pasta de becape)" >> /root/backup/controle.txt
echo "****************************************" >> /root/backup/controle.txt

}
fita(){

echo "Início de gravação em fita: `date +%A\ %d/%m/%Y\ %T`" >> /root/backup/controle.txt

if [ $DATA -eq 1 ] || [ $DATA -eq 2 ] || [ $DATA -eq 3 ] || [ $DATA -eq 4 ]; then

tar -cvf /dev/st0 /root/backup/$pasta
mt -f /dev/st0 rewind
tar -tvf /dev/st0 > /root/backup/$pasta/fita_$pasta.txt
mt -f /dev/st0 eject

else

case $DATA in

5)
tar -cvf /dev/nst0 /root/backup/$pasta
mt -f /dev/nst0 rewind
tar -tvf /dev/nst0 > /root/backup/$pasta/fita_$pasta.txt;;

6)
mt -f /dev/nst0 fsf 1
tar -cvf /dev/nst0 /root/backup/$pasta
mt -f /dev/nst0 rewind
mt -f /dev/nst0 fsf 1
tar -tvf /dev/nst0 > /root/backup/$pasta/fita_$pasta.txt;;

0)
mt -f /dev/nst0 rewind
mt -f /dev/nst0 fsf 2
tar -cvf /dev/nst0 /root/backup/$pasta
mt -f /dev/nst0 rewind
mt -f /dev/nst0 fsf 2
tar -tvf /dev/nst0 > /root/backup/$pasta/fita_$pasta.txt
mt -f /dev/st0 rewind && mt -f /dev/st0 eject;;

esac

fi

echo "Término de gravação em fita: `date +%A\ %d/%m/%Y\ %T` " >> /root/backup/controle.txt
echo >> /root/backup/controle.txt
echo "--------------------------------------------------------" >> /root/backup/controle.txt

}

########## INÍCIO #############

prepara_diretorios

log_controle_cabecalho

calcula_becapes_antes

backup_rede

log_controle_rodape

calcula_becapes_depois

estatisticas

fita

#FIM


2 - Log atual:


--------------------------------------------------------

*******************************************************
******* | PROCESSO DE BACKUP DOS SERVIDORES | *******
******* | 29/05/18 | *******
*******************************************************

Início da criação de pasta de backup às: terça 29/05/2018 20:00:01

Finalização da pasta bkpQuantum290518 às: terça 29/05/2018 20:00:06
Tamanho da pasta: 164M

Finalização da pasta bkpWeb2290518 às: terça 29/05/2018 20:34:54
Tamanho da pasta: 22G

Finalização da pasta bkpWeb290518 às: terça 29/05/2018 20:41:51
Tamanho da pasta: 13G

Finalização da pasta bkpOrcas290518 às: terça 29/05/2018 20:48:22
Tamanho da pasta: 23G

Finalização da pasta bkpNotes290518 às: terça 29/05/2018 21:00:25
Tamanho da pasta: 59G

Finalização da cópia de VOL03 às: quarta 30/05/2018 00:24:15
Finalização da cópia de VOL02 às: quarta 30/05/2018 01:40:27
Finalização da cópia de VOL01 às: quarta 30/05/2018 03:00:41
Finalização da pasta bkpRedeAdm290518 às: quarta 30/05/2018 03:00:41
Tamanho da pasta: 220G

:::::::::::::::::::::::::::::::::::::
Término da criação de pasta de backup às: quarta 30/05/2018 03:00:55

-----------------------------------------------
DISCO CHEIO!!! Excluindo o becape mais antigo.
Diretório excluido: bkp280518
-----------------------------------------------
Tamanho total do Volume: 1,1T (Aprox 1153220608 GB)
Tamanho total do becape atual: 336G
Capacidade Total de becape(s)do Volume: 3
Espaço ocupado em Disco: 547G(53%)
Espaço Livre: 498G
Quantidade possível de becapes restantes: 1
(Cálculo em função do tamanho atual da pasta de becape)
****************************************
Início de gravação em fita: quarta 30/05/2018 03:02:03
Término de gravação em fita: quarta 30/05/2018 06:41:42

--------------------------------------------------------


3 - Como eu queria que ficasse formatado:


*************************************************************************
**************** | PROCESSO DE BACKUP DOS SERVIDORES | ****************
**************** | 29/05/18 | ****************
*************************************************************************
=========================================================================
1 - Análise primária do Disco: [ Espaço suficiente ]
=========================================================================
=========================================================================
2 - Início da criação de pasta de backup às: quarta 29/05/2018 20:00:01
=========================================================================
-------------------------------------------------------------------------
| Diretório | data/hora término cópia | Tamanho |
-------------------------------------------------------------------------
_________________________________________________________________________
|bkpQuantum160518 | quarta 29/05/2018 20:00:05 | 133M |
|________________________________________________________________________
|bkpWeb2160518 | quarta 29/05/2018 20:29:31 | 19G |
|________________________________________________________________________
|bkpWeb160518 | quarta 29/05/2018 20:36:25 | 13G |
|________________________________________________________________________
|bkpOrcas160518 | quarta 29/05/2018 20:43:02 | 23G |
|________________________________________________________________________
|bkpNotes160518 | quarta 29/05/2018 20:54:44 | 59G |
|________________________________________________________________________
|bkpRedeAdm160518 | quinta 30/05/2018 01:38:01 | 174G |
|------------------------------------------------------------------------
| | VOL03 | quinta 30/05/2018 00:18:21 | 19G |
| | VOL02 | quinta 30/05/2018 01:34:36 | 55G |
| | VOL01 | quinta 30/05/2018 01:38:01 | 102G |
|------------------------------------------------------------------------
|_______________________________________________________________________|
=========================================================================
3 - Término da criação de pasta de backup às: quinta 30/05/2018 01:38:10
=========================================================================
=========================================================================
4 - Análise secundária do Disco: [ DISCO CHEIO!--> Excluido: bkp140518 ]
=========================================================================
=========================================================================
5 - Estatísticas:
=========================================================================
-------------------------------------------------------------------------
|Tamanho total do Volume: 1,1T (Aprox 1153220608 GB) |
|Tamanho total do becape atual: 286G |
|Capacidade Total de becape(s)do Volume: 3 |
|Espaço ocupado em Disco: 773G(75%) |
|Espaço Livre: 272G |
|Quantidade possível de becapes restantes: 0 |
-------------------------------------------------------------------------
*Obs.:(Cálculo em função do tamanho atual do diretório de becape)
=========================================================================
6 - Fita: Gravação --> 17/05/18 01:39:14 | Término --> 17/05/18 04:38:43
=========================================================================



É possível deixar essas linhas "|" como se fosse uma "borda" da página e o valor das variáveis serem escritas com o comando "echo" de forma a preencher de forma automática sempre mantendo o alinhamento?
Desde já agradeço a atenção...


  


2. Re: Como Formatar arquivo de log, com textos alinhados em colunas fixas?

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 04/06/2018 - 09:51h

velho ... acho q em txt vc não consegue fazer isso não, vou até pesquisar, já aventurou a idéia de gerar em HTML ???

------------------------------------------| Linux User #621728 |-----------------------------------------

" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

------------------------------------------| Linux User #621728 |-----------------------------------------



3. Re: Como Formatar arquivo de log, com textos alinhados em colunas fixas?

Luiz Carlos
luizcarlos18rj

(usa Suse)

Enviado em 04/06/2018 - 15:45h

Sinceramente nunca pensei nisso, mas aí teria que mandar um "echo" com as tags dentro do script pra formatar né?


4. Re: Como Formatar arquivo de log, com textos alinhados em colunas fixas?

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 04/06/2018 - 16:47h

é .. seria como gerar um relatório online, mas fazer isso é 2 tempos, com a vantagem de poder formatar tamanho e quiçá implementar um CSS

------------------------------------------| Linux User #621728 |-----------------------------------------

" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

------------------------------------------| Linux User #621728 |-----------------------------------------



5. Re: Como Formatar arquivo de log, com textos alinhados em colunas fixas?


oxidante

(usa Debian)

Enviado em 05/06/2018 - 12:13h

Utilize o comando printf para criar cada célula da tabela e no final use printf para imprimir toda a linha formatada com as células.
Para o alinhamento, calcule quantos espaços faltam para cada célula e adicione-os a ela, no início ou no fim.
Fiz uma função que adiciona linhas para a tabela Diretório/DataHora/Tamanho. O princípio é o mesmo para as outras partes do teu código.

#!/bin/bash

function addlinha()
{
local dir=$1
local dh=$2
local tam=$3

# Variaveis usadas apenas para obter
# o tamanho de cada coluna.
coldir="| Diretório |"
coldh="| data/hora termino copia |"
coltam="| Tamanho |"

#
# Cria celula diretorio
#

# Calcula qtos espacos faltam para add no fim da celula diretorio
celtemp=$(printf "|%s|" "$dir")
numesp=$((${#coldir} - ${#celtemp}))

# Preenche a variavel com os espacos que faltam
espacos=""
for((i=0;i<$numesp;i++));do espacos+=" "; done

# Cria a celula diretorio que será usada
# para "printfar" a linha resultante
celdir=$(printf "%s%s" "$dir" "$espacos")

#
# Cria celula datahora
#
celtemp=$(printf "| %s|" "$dh")
numesp=$((${#coldh} - ${#celtemp}))
espacos=""
for((i=0;i<$numesp;i++));do espacos+=" "; done
celdh=$(printf " %s%s" "$dh" "$espacos")

#
# Cria celula tamanho
#
celtemp=$(printf "|%s |" "$tam")
numesp=$((${#coltam} - ${#celtemp}))
espacos=""
for((i=0;i<$numesp;i++));do espacos+=" "; done
celtam=$(printf "%s%s " "$espacos" "$tam")

# Finalmente, imprime a linha formatada com printf
echo "_________________________________________________________________________"
printf "|%s|%s|%s|\n" "$celdir" "$celdh" "$celtam"

}

echo "-------------------------------------------------------------------------"
echo "| Diretório | data/hora término cópia | Tamanho |"
echo "-------------------------------------------------------------------------"
echo

# Entrada
dir="bkpWeb160518"
dh="domingo 20/07/2018 21:00:07"
tam="1G"
addlinha "$dir" "$dh" "$tam"

dir="bkpQuantum160518"
dh="sexta 29/05/2018 20:00:05"
tam="133M"
addlinha "$dir" "$dh" "$tam"




6. Re: Como Formatar arquivo de log, com textos alinhados em colunas fixas?

Perfil removido
removido

(usa Nenhuma)

Enviado em 05/06/2018 - 13:13h

Outra sugestão seria implementar um template.

#!bin/bash

########## DECLARAÇÃO DE VARIÁVEIS #############

pasta=bkp$(date +%d%m%y)

notes=bkpNotes$(date +%d%m%y)

redeadm=bkpRedeAdm$(date +%d%m%y)

web=bkpWeb$(date +%d%m%y)

web2=bkpWeb2$(date +%d%m%y)

orcas=bkpOrcas$(date +%d%m%y)

quantum=bkpQuantum$(date +%d%m%y)

DATA=$(date +%w)

########## DECLARAÇÃO DE PROCEDIMENTOS / FUNÇÕES #############

prepara_diretorios(){
cd /root/backup
mkdir $pasta
cd $pasta
mkdir $notes
mkdir $redeadm
touch /root/backup/$pasta/$redeadm/scp_erros.txt
mkdir $web
mkdir $web2
mkdir $orcas
mkdir $quantum
cd /root/backup
}

log_controle_cabecalho(){

data_titulo=$(date +%d/%m/%y)
data_inicio=$(date +%A\ %d/%m/%Y\ %T)

}

calcula_becapes_antes(){

uso=$(df -h | grep sdb | awk '{ print $5}' | cut -d'%' -f1)
pasta_excluir=$(ls -1ltr | grep -m 1 bkp | awk '{ print $NF}')

if [ $uso -ge 70 ]; then
disco="Espaço suficiente"
rm -rf $pasta_excluir
else
disco="Ok"

fi
}

backup_rede(){

scp_quantum(){
scp -r root@10.3.48.202:/home/backup /root/backup/$pasta/$quantum
data_quantum=$(date +%A\ %d/%m/%Y\ %T)
tamanho_quantum=$(du -hs /root/backup/$pasta/$quantum | cut -f1)
}

scp_web2(){
scp -r root@10.3.48.3:/opt/lampp /root/backup/$pasta/$web2
scp -r root@10.3.48.3:/opt/lampp/htdocs/backup_drupal_casop_interno /root/backup/$pasta/$web2
data_web2=$(date +%A\ %d/%m/%Y\ %T)
tamanho_web2=$(du -hs /root/backup/$pasta/$web2 | cut -f1)
}

scp_web(){
scp -r root@10.3.48.5:/var/lib/mysql /root/backup/$pasta/$web
scp -r root@10.3.48.5:/srv /root/backup/$pasta/$web
data_web=$(date +%A\ %d/%m/%Y\ %T)
tamanho_web=$(du -hs /root/backup/$pasta/$web | cut -f1)
}

scp_orcas(){
scp -r root@10.3.48.4:/usr/local/Apache-Tomcat-8.0.9 /root/backup/$pasta/$orcas
scp -r root@10.3.48.4:/usr/local/CASOP /root/backup/$pasta/$orcas
scp -r root@10.3.48.4:/svn /root/backup/$pasta/$orcas
data_orcas=$(date +%A\ %d/%m/%Y\ %T)
tamanho_orcas=$(du -hs /root/backup/$pasta/$orcas | cut -f1)
}

scp_notes(){
scp -r root@192.168.0.2:/local/notesdata /root/backup/$pasta/$notes
data_notes=$(date +%A\ %d/%m/%Y\ %T)
tamanho_notes=$(du -hs /root/backup/$pasta/$notes | cut -f1)
}

scp_redeadmin(){
scp -r root@10.3.48.13:/var/firebird /root/backup/$pasta/$redeadm
scp -r root@10.3.48.13:/home/VOL03 /root/backup/$pasta/$redeadm >> /root/backup/$pasta/$redeadm/scp_erros.txt 2>&1
data_vol03=$(date +%A\ %d/%m/%Y\ %T)
tamanho_vol03=$(du -hs /home/VOL03 | cut -f1)
scp -r root@10.3.48.13:/home/VOL02 /root/backup/$pasta/$redeadm >> /root/backup/$pasta/$redeadm/scp_erros.txt 2>&1
data_vol02=$(date +%A\ %d/%m/%Y\ %T)
tamanho_vol02=$(du -hs /home/VOL02 | cut -f1)
scp -r root@10.3.48.13:/home/VOL01 /root/backup/$pasta/$redeadm >> /root/backup/$pasta/$redeadm/scp_erros.txt 2>&1
data_vol01=$(date +%A\ %d/%m/%Y\ %T)
tamanho_vol01=$(du -hs /home/VOL01 | cut -f1)
data_redeadm=$(date +%A\ %d/%m/%Y\ %T)
tamanho_redadm=$(du -hs /root/backup/$pasta/$redeadm | cut -f1)
}

scp_quantum
scp_web2
scp_web
scp_orcas
scp_notes
scp_redeadmin

}

log_controle_rodape(){

data_controle=$(date +%A\ %d/%m/%Y\ %T)

}

calcula_becapes_depois(){

tamanho_disco_H=$(df -h | grep sdb | awk '{ print $2}')
tamanho_disco=$(df -m | grep sdb | awk '{ print $2}')
tamanho_disco_aprox=$(echo "($tamanho_disco*1024)" | bc)

tamanho_pasta_H=$(du -hs $pasta| cut -f1)
tamanho_pasta=$(du -ms $pasta| cut -f1)

becapes_possiveis=$(echo "(($tamanho_disco)/$tamanho_pasta)" | bc)
pasta_excluir=$(ls -1ltr | grep -m 1 bkp | awk '{ print $NF}')

uso_H=$(df -h | grep sdb | awk '{ print $5}')
uso=$(df -h | grep sdb | awk '{ print $5}' | cut -d'%' -f1)
usado_H=$(df -h | grep sdb | awk '{ print $3}')

livre_H=$(df -h | grep sdb | awk '{ print $4}')
livre=$(df -m | grep sdb | awk '{ print $4}')

qtdbecapes=$(echo "$livre/$tamanho_pasta" | bc)

if [ $qtdbecapes -eq 0 ]; then
rm -rf $pasta_excluir
fi

##### Releitura de variáveis caso haja liberação de espaço ######

uso_H2=$(df -h | grep sdb | awk '{ print $5}')
usado_H2=$(df -h | grep sdb | awk '{ print $3}')
livre_H2=$(df -h | grep sdb | awk '{ print $4}')
livre2=$(df -m | grep sdb | awk '{ print $4}')
qtdbecapes2=$(echo "$livre2/$tamanho_pasta" | bc)
}

fita(){

data_fita_inicio=$(date +%d/%m/%y\ %T)

if [ $DATA -eq 1 ] || [ $DATA -eq 2 ] || [ $DATA -eq 3 ] || [ $DATA -eq 4 ]; then

tar -cvf /dev/st0 /root/backup/$pasta
mt -f /dev/st0 rewind
tar -tvf /dev/st0 > /root/backup/$pasta/fita_$pasta.txt
mt -f /dev/st0 eject

else

case $DATA in

5)
tar -cvf /dev/nst0 /root/backup/$pasta
mt -f /dev/nst0 rewind
tar -tvf /dev/nst0 > /root/backup/$pasta/fita_$pasta.txt;;

6)
mt -f /dev/nst0 fsf 1
tar -cvf /dev/nst0 /root/backup/$pasta
mt -f /dev/nst0 rewind
mt -f /dev/nst0 fsf 1
tar -tvf /dev/nst0 > /root/backup/$pasta/fita_$pasta.txt;;

0)
mt -f /dev/nst0 rewind
mt -f /dev/nst0 fsf 2
tar -cvf /dev/nst0 /root/backup/$pasta
mt -f /dev/nst0 rewind
mt -f /dev/nst0 fsf 2
tar -tvf /dev/nst0 > /root/backup/$pasta/fita_$pasta.txt
mt -f /dev/st0 rewind && mt -f /dev/st0 eject;;

esac

fi

data_fita_fim=$(date +%d/%m/%y\ %T)

}

########## INÍCIO #############

prepara_diretorios

log_controle_cabecalho

calcula_becapes_antes

backup_rede

log_controle_rodape

calcula_becapes_depois

fita

#FIM


########## TEMPLATE #############
cat << EOF
*************************************************************************
**************** | PROCESSO DE BACKUP DOS SERVIDORES | ****************
**************** | $data_titulo | ****************
*************************************************************************
=========================================================================
1 - Análise primária do Disco: [ $disco ]
=========================================================================
=========================================================================
2 - Início da criação de pasta de backup às: $data_inicio
=========================================================================
-------------------------------------------------------------------------
| Diretório | data/hora término cópia | Tamanho |
-------------------------------------------------------------------------
_________________________________________________________________________
|$quantum | $data_quantum | $tamanho_quantum |
|________________________________________________________________________
|$web2 | $data_web2 | $tamanho_web2 |
|________________________________________________________________________
|$web | $data_web | $tamanho_web |
|________________________________________________________________________
|$orcas | $data_orcas | $tamanho_orcas |
|________________________________________________________________________
|$notes | $data_notes | $tamanho_notes |
|________________________________________________________________________
|$redeadm | $data_redeadm | $tamanho_redadm |
|------------------------------------------------------------------------
| | VOL03 | $data_vol03 | $tamanho_vol03 |
| | VOL02 | $data_vol02 | $tamanho_vol02 |
| | VOL01 | $data_vol01 | $tamanho_vol01 |
|------------------------------------------------------------------------
|_______________________________________________________________________|
=========================================================================
3 - Término da criação de pasta de backup às: $data_controle
=========================================================================
=========================================================================
4 - Análise secundária do Disco: [ $disco --> Excluido: $pasta_excluir ]
=========================================================================
=========================================================================
5 - Estatísticas:
=========================================================================
-------------------------------------------------------------------------
Tamanho total do Volume: $tamanho_disco_H (Aprox $tamanho_disco_aprox GB)
Tamanho total do becape atual: $tamanho_pasta_H
Capacidade Total de becape(s)do Volume: $becapes_possiveis
Espaço ocupado em Disco: $usado_H2($uso_H2)
Espaço Livre: $livre_H2
Quantidade possível de becapes restantes: $qtdbecapes2
-------------------------------------------------------------------------
*Obs.:(Cálculo em função do tamanho atual do diretório de becape)
=========================================================================
6 - Fita: Gravação --> $data_fita_inicio | Término --> $data_fita_fim
=========================================================================
EOF



7. Re: Como Formatar arquivo de log, com textos alinhados em colunas fixas?

Luiz Carlos
luizcarlos18rj

(usa Suse)

Enviado em 07/06/2018 - 16:10h

amarildosertorio escreveu:

Outra sugestão seria implementar um template.

[quote]
#!bin/bash

########## TEMPLATE #############
cat << EOF
*************************************************************************
**************** | PROCESSO DE BACKUP DOS SERVIDORES | ****************
**************** | $data_titulo | ****************
*************************************************************************
=========================================================================
1 - Análise primária do Disco: [ $disco ]
=========================================================================
=========================================================================
2 - Início da criação de pasta de backup às: $data_inicio
=========================================================================
-------------------------------------------------------------------------
| Diretório | data/hora término cópia | Tamanho |
-------------------------------------------------------------------------
_________________________________________________________________________
|$quantum | $data_quantum | $tamanho_quantum |
|________________________________________________________________________
|$web2 | $data_web2 | $tamanho_web2 |
|________________________________________________________________________
|$web | $data_web | $tamanho_web |
|________________________________________________________________________
|$orcas | $data_orcas | $tamanho_orcas |
|________________________________________________________________________
|$notes | $data_notes | $tamanho_notes |
|________________________________________________________________________
|$redeadm | $data_redeadm | $tamanho_redadm |
|------------------------------------------------------------------------
| | VOL03 | $data_vol03 | $tamanho_vol03 |
| | VOL02 | $data_vol02 | $tamanho_vol02 |
| | VOL01 | $data_vol01 | $tamanho_vol01 |
|------------------------------------------------------------------------
|_______________________________________________________________________|
=========================================================================
EOF


mano como ao invés de exibir um "cat" na tela como eu redireciono ele pra um arquivo de texto?








Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts