Arquivo da categoria ‘programação’

#!/bin/sh
#Para a checagem de Sintaxe use a opção −n. ex: #!/bin/sh -n
# Script de backup
# hachidbackupservers.sh − Faz backup de Servidores usando Rsync
### Inicialização das variáveis
#
#@autor: Richardson Lima
#@email2:securityfusion@gmail.com
#

#ROOT_UID=0      # Apenas os usuários com $UID 0 tem privilégios root.
#LINES=500       # Número padrão de linhas salvas.
#E_XCD=66        # Não é possível alterar o diretório?
#E_NOTROOT=67    # Non−root, saída erro.

### Habilite para depuração
# DEBUG=1 # depuração: 0 desliga, 1 liga
### função de depuração
#Debug(){ [ “$DEBUG” = 1 ] && echo “$*” ; }

#Servidores
MAILSERVER=’192.168.0.x’
MYSQLSERVER=’192.168.0.x’
SMBSERVER=’192.168.0.x’     # Servidor Samba
SVNSERVER1=’192.168.0.x’    # Servidor SVN1
SVNSERVER2=’192.168.0.x’    # Servidor SVN2
CVSSERVER=’192.168.0.x’     # Servidor CVS

### MAILSEVER
HOME_MAIL_TMP_DIR=’/algumDiretorio/bkp-mail/tmp-home-mail/’           # Diretório de armazenamento temporario
VAR_MAIL_TMP_DIR=’/algumDiretorio/bkp-mail/tmp-var-mail/’             # Diretório de armazenamento temporario
ETC_MAIL_TMP_DIR=’/algumDiretorio/bkp-mail/tmp-etc-mail/’             # Diretório de armazenamento temporario
BKP_MAIL_DIR=’/algumDiretorio/bkp-mail/’                              # Diretório de armazenamento dos compactados

### MYSQLSERVER
BACKUP_REMOTO_DIR1=’/algumDiretorio/bkp-mysql/’
BACKUP_REMOTO_DIR2=’/algumDiretorio/bkp-mysql/’
BACKUP_DIR1=’/algumDiretorio/bkp-mysql/’
BACKUP_DIR2=’/algumDiretorio/b-mysql/bkp-reserva-mysql/’
BACKUP_TMP_DIR1=’/algumDiretorio/bkp-mysql/tmp1′
BACKUP_TMP_DIR2=’/algumDiretorio/bkp-mysql/tmp2′

### CVS SEVER
CVSDIR=’/algumDiretorio/cvs/’
BKP_TMP_CVS=’/algumDiretorio/bkp-cvs/tmp-cvs/’
CVS_BKP_DIR=’/algumDiretorio/bkp-cvs’

### SVN SERVER 1
SVNDIR1=’/algumDiretorio/svn/’
BKP_TMP_SVN1=’/algumDiretorio/b-svn1/tmp-svn1/’
SVN1_BKP_DIR=’/algumDiretorio/b-svn1/’

### SVN SERVER 2
SVNDIR2=’/algumDiretorio/svn/’
BKP_TMP_SVN2=’/algumDiretorio/bkp-svn2/tmp-svn2/’
SVN2_BKP_DIR=’/algumDiretorio/bkp-svn2/’

### Data e Log
LOG=’/var/log/backup.log’
DATA=`date +%d-%m-%Y-%H.%M`

# Executar como root, claro!.
#if [ “$UID” −ne “$ROOT_UID” ]
#then
#   echo “Ops ! Somente o usuário root pode rodar este programa.”
#   exit $E_NOTROOT
#fi
# Teste se apresentar argumento de linha de comando (non−empty).
#then
#   lines=$1
#else
#   lines=$LINES # Padrão, se não especificado em linha de comando.
#fi

echo “—————————————”
echo “-  Iniciando backup do servidor MySQL -”
echo “—————————————”
echo

# 1
#ssh root@${MYSQLSERVER} ‘/usr/bin/mysqldump -u root -pCOLOCARSENHA –all-databases > /algumDiretorio/b-mysql/backupmysql.sql’
#ssh root@${MYSQLSERVER} ‘cd ${BACKUP_REMOTO_DIR1}’
#ssh root@${MYSQLSERVER} ‘tar -czvf bkpMysql-${DATA}.tar.gz backupmysql.sql’

rsync -Cravzp root@${MYSQLSERVER}:${BACKUP_REMOTO_DIR1}* ${BACKUP_TMP_DIR1} >> ${LOG} # transferindo o backup do Mysql para o servidor de backup
cd ${BACKUP_TMP_DIR1} && tar -czvf bkpMysql-${DATA}.tar.gz backupmysql.sql && cp *sql ${BACKUP_DIR1} && cp *.tar.gz ${BACKUP_DIR1}
echo ”  Procurando arquivos com mais de 7 dias para remoção  ”
find ${BACKUP_DIR1} -name “*.tar.gz” -ctime +7 -exec rm -vrf {} >> ${LOG} \;
echo “Limpando diretório temporario”
cd ${BACKUP_TMP_DIR1}* >> ${LOG} && rm -vrf *.sql *.tar.gz >> ${LOG}

# 2
#ssh root@${MYSQLSERVER} ‘/usr/bin/mysqldump -u root -pCOLOCARSENHA –all-databases > /algumDiretorio/b-mysql/backupmysql.sql’
#ssh root@${MYSQLSERVER} ‘cd ${BACKUP_REMOTO_DIR2}’
#ssh root@${MYSQLSERVER} ‘tar -czvf bkpMysql-${DATA}.tar.gz backupmysql.sql’

rsync -Cravzp root@${MYSQLSERVER}:${BACKUP_REMOTO_DIR2}* ${BACKUP_TMP_DIR2} >> ${LOG} # transferindo o backup do Mysql para o servidor de backup
cd ${BACKUP_TMP_DIR2} && tar -czvf bkpMysql-${DATA}.tar.gz backupmysql.sql  && cp *sql ${BACKUP_DIR2} cp *.tar.gz ${BACKUP_DIR2}
echo ”  Procurando arquivos com mais de 7 dias para remoção  ”
find ${BACKUP_DIR2} -name “*.tar.gz” -ctime +7 -exec rm -vrf {} >> ${LOG} \;
echo “Limpando diretório temporario”
cd ${BACKUP_TMP_DIR2}* >> ${LOG} && rm -vrf *.sql *.tar.gz >> ${LOG}

# mensagem de resultado
echo
echo “——————————————-”
echo “-          BACKUP DO SERVIDOR MySQL       -”
echo “-  Seu backup foi realizado com sucesso.  -”
echo “——————————————-”

echo “————————————–”
echo “-  Iniciando backup do servidor Mail -”
echo “————————————–”
echo

echo
mount /dev/md0 /algumDiretorio
montado=`mount | grep /algumDiretorio`
if [ -z “$montado” ]; then
exit 1
else
echo ”  Iniciando copia dos arquivos … ”
rsync -Cravzp root@${MAILSERVER}:/Diretorio/ ${HOME_MAIL_TMP_DIR} >> ${LOG}
rsync -Cravzp root@${MAILSERVER}:/Diretorio/ ${VAR_MAIL_TMP_DIR} >> ${LOG}
rsync -Cravzp root@${MAILSERVER}:/Diretorio/ ${PAGINA_MAIL_TMP_DIR} >> ${LOG}
rsync -Cravzp root@${MAILSERVER}:/Diretorio/ ${ETC_MAIL_TMP_DIR} >> ${LOG}
cd ${BKP_MAIL_DIR}
#if [ `pwd` != “$BKP_MAIL_DIR” ]  # or   if [ “$PWD” != “$BKP_MAIL_DIR” ]
# Não está em /algumDiretorio/b-mail/?
#then
# echo “Não é possível alterar $BKP_MAIL_DIR.”
# exit $E_XCD
#fi # Doublecheck no diretório, antes de brincar com arquivo de registro.

echo ”  Compactando os arquivos  …     ”
tar -czvf bkpHome-mail-${DATA}.tar.gz ${HOME_MAIL_TMP_DIR} >> ${LOG}
tar -czvf bkpVar-mail-${DATA}.tar.gz ${VAR_MAIL_TMP_DIR} >> ${LOG}
tar -czvf bkpHome-Pagina-mail-${DATA}.tar.gz ${PAGINA_MAIL_TMP_DIR} >> ${LOG}
tar -czvf bkpEtc-mail-${DATA}.tar.gz ${ETC_MAIL_TMP_DIR} >> ${LOG}
echo ”  Procurando arquivos com mais de 7 dias para remoção  ”
find ${BKP_MAIL_DIR} -name “*.tar.gz” -ctime +7 -exec rm -vrf {} >> ${LOG} \;
echo “Limpando diretório temporario”
rm -vrf ${HOME_MAIL_TMP_DIR}* >> ${LOG}
rm -vrf ${VAR_MAIL_TMP_DIR}* >> ${LOG}
rm -vrf ${PAGINA_MAIL_TMP_DIR}* >> ${LOG}
rm -vrf ${ETC_MAIL_TMP_DIR}* >> ${LOG}
# mensagem de resultado
echo
echo “——————————————-”
echo “-          BACKUP SEVIDOR-MAIL            -”
echo “-  Seu backup foi realizado com sucesso.  -”
echo “——————————————-”
echo
fi

echo
echo “———————————–”
echo “Iniciando backup do servidor SVN 1 ”
echo “———————————–”

echo
mount /dev/md0 /algumDiretorio
montado=`mount | grep /algumDiretorio`
if [ -z “$montado” ]; then
exit 1
else
echo “Iniciando copia dos arquivos … ”

rsync -Cravzp root@${SVNSERVER1}:${SVNDIR1} ${BKP_TMP_SVN1}
echo “Compactando os arquivos … ”
cd ${SVN1_BKP_DIR}

tar -czvf bkpSvn1-${DATA}.tar.gz ${BKP_TMP_SVN1} >> ${LOG}
echo “Procurando arquivos com mais de 7 dias para remoção”
find ${SVN1_BKP_DIR} -name “*.tar.gz” -ctime +7 -exec rm -vrf {} >> ${LOG} \;
echo “Limpando diretório temporario”
rm -vrf ${BKP_TMP_SVN1}* >> ${LOG}
# mensagem de resultado
echo
echo “———————————–”
echo ”     BACKUP SVN1 CONCLUIDO!        ”
echo “———————————–”
echo
fi

echo
echo “———————————–”
echo “Iniciando backup do servidor SVN 2 ”
echo “———————————–”

echo
mount /dev/md0 /algumDiretorio
montado=`mount | grep /algumDiretorio`
if [ -z “$montado” ]; then
exit 1
else
echo “Iniciando copia dos arquivos … ”

rsync -Cravzp root@${SVNSERVER2}:${SVNDIR2} ${BKP_TMP_SVN2}
echo “Compactando os arquivos … ”
cd ${SVN2_BKP_DIR}

tar -czvf bkpSvn2-${DATA}.tar.gz ${BKP_TMP_SVN2} >> ${LOG}
echo “Procurando arquivos com mais de 7 dias para remoção”
find ${SVN2_BKP_DIR} -name “*.tar.gz” -ctime +7 -exec rm -vrf {} >> ${LOG} \;
echo “Limpando diretório temporario”
rm -vrf ${BKP_TMP_SVN2}* >> ${LOG}
# mensagem de resultado
echo
echo “———————————–”
echo ”     BACKUP SVN2 CONCLUIDO!        ”
echo “———————————–”
echo
fi
#Enviando email de confirmacao

ssh root@${MAILSERVER} ‘/root/emailDoBackup.pl’

#Abaixo o conteudo do Script
#use MIME::Entity;

#$texto = “O servidor de backup realizou o backup com sucesso,em anexo o script de backup !”;

#$top = build MIME::Entity  From => ‘Root <root>’,
#                           To   =>   ‘suporte@domain’,
#                           Subject => “[Backup-Empresa] Confirmação do Backup “,
#                           Data => $texto;

# definindo o anexo
#$top->attach(
#            Name        => “backupscript.sh”,
#            Path        => “backupscript.sh”,
#Type        => “application/x-gtar”,
#            Encoding    => “base64″
#);

# caminho para o programa do agente MTA do seu servidor
#open(MAIL,”| /usr/lib/sendmail -t”);
#$top->print(\*MAIL);
#close(MAIL);

exit 0
# O valor zero é retornado após a saída do script
#+ Indica sucesso para o shell.

Abaixo especifico o scrip !!!!

#!/usr/bin/perl
# este modulo eh necessario para que tudo ocorra corretamente.
use MIME::Entity;

$txt1 = “O servidor de backup realizou o backup com sucesso,em anexo o script de backup !”;

$top = build MIME::Entity  From => ‘Root <root>’,
To   =>   ‘suporte@domain’,
Subject => “[Backup-Empresa] Confirmação do Backup “,
Data => $txt1;

# Anexo
$top->attach(
Name        => “algumacoisaExemplo.sh”,
Path        => “/diretorio/algumacoisaExemplo.sh”,
# Se o anexo for compactado
#Type        => “application/x-gtar”,
Encoding    => “base64″
);

# Agente MTA do seu servidor
open(MAIL,”| /usr/lib/sendmail -t”);
$top->print(\*MAIL);
close(MAIL);

Encapsulamento

Dizemos que um objeto em um programa ” encapsula” todo o estado e comportamento,de modo que podemos tratar o objeto como um coisa só,em vez de ter várias variáveis e subprogramas isolados entre si.
* É por isso que um programa em Java costuma ser formado por vários objetos em vez de apenas um.
* Os objetos encapsulados corretamente são independentes do programa onde eles são utilizados.

Objeto

Um objeto representa qualquer coisa do mundo real que seja manipulada pelo nosso programa,ou então representa blocos de construção do próprio programa.

* Um programa
* Um cliente
* Um botão
* Conta bancária

Assim como as coisas no mundo real, os objetos tem “estado” e “comportamento”.

* Estado são informações sobre o objeto,como a sua cor,seu peso,o saldo da conta bancária e etc.
* Comportamento são coisas que podem ser feitas com ou pelo objeto,como depositar em uma conta-corrente ou mudar a cor de uma janela.
–> Objetos também tem uma identificação,de modo que possamos diferenciar entre vários objetos semelhantes.
* O usuário ” Kakimoto” e o usuário “Germano”.