Pular para o conteúdo

Scripts de Carnaval

Scripts de Carnaval

Oi a todos? Como foram de carnaval???

Como muitos já sabem, trabalho de dba não tem dia nem horário… é possível que você tenha que trabalhar depois do expediente, aos domingos e feriados, etc.
E, este foi o meu caso: estava de plantão e em plena terça de carnaval, e com isso, fui trabalhar (nem deu pra aproveitar a festa da Roseira da Freguesia do Ó).

O bom é que quase não houve chamados para eu atender; desta forma, pude adiantar algumas das minhas (muitas) pendências (finalmente alguns post-its puderam ir para a Lixeira).
Foi o que eu fiz: Dentre muitas resolvidas, cito as três mais simples (porém não menos importantes):

1 – Finalmente desfiz o dual-boot do meu computador: A partir de hoje, apenas Linux!

2 – Fiz um script para fazer backup dos agendamentos e scripts das crontabs de tais servidores.

3 – Terminei outro script para  centralizar o log de backup das 20 instâncias aix sob oracle 9i que administramos;

1 – Linux no notebook

Depois de mais de 1 ano ter postado no blog sobre utilizar Linux, apenas agora tive coragem de instalar apenas ele no computador. Bem, instalei o Ubuntu 9.04, mas isto será assunto para outro post 🙂

2 – Script para backup da crontab

É uma coisa muito simples, mas essencial! Às vezes a gente passa o dia todo implementando um script para automatizar alguma tarefa, agenda seu funcionamento na crontab mas… esquecemo-nos de fazer cópias de segurança …
O pior – e mais fácil de acontecer – é perder todos os agendamentos da crontab! Vocês já repararam como o “E” fica próximo do “R” no teclado??? Infelizmente o AIX não pergunta “Do you really want remove all schedules?” após pressionar ctrl+R.
Como todos os scripts que utilizo geralmente ficam armazenados no diretório /usr/local/scripts , ficou mais fácil:

 cd  /usr/local/scripts                                                                    
 DIA=`/usr/bin/date +%d +- +%m +- +%y`                                                 
 crontab -l > "$DIA"_crontab.bkp                                                       
 tar -cf "$DIA"_backup_scripts.tar *.ksh "$WDAY"_crontab.bkp                           
 gzip "$DIA"_backup_scripts.tar                                                        
 rm -rf "$DIA"_crontab.bkp

Resumindo: O script trabalha dentro do diretório /usr/local/scripts, cria um arquivo compactado com o conteúdo da crontab, todos os arquivos com extensão *.ksh e nomea-o com a data de criação.

Este script pode ficar ainda melhor se enviado para outro servidor, fita, etc…

3- Centralizando os logs de backup

Este creio que foi o mais simples e o que mais me ajudou.
Diariamente, temos que verificar os logs de backup de umas 25 instâncias que rodam Oracle 9i. Só de entrar em servidor por servidor e olhar o log gastávamos em torno de 30 minutos por dia, além de ser um trabalho extremamento chato.

Solução: Concentrei todos os logs em apenas 1 documento, em apenas 1 servidor!
Para fazer isso, utilizei o conceito de autenticação chave pública/privada do serviço SSH: gerei uma chave sem senha no servidor de destino dos logs, para efetuar remotamente o comando tail em todos os servidores.

Basicamente, são 2 passos:

A – Criar chave pública e copiá-la nos servidores de origem

— Comandos: —

ssh-keygen -t rsa -b 1024

onde -t significa tipo

onde -b significa tamanho em bytes da criptografia

Na mensagem “Enter file in which to save the key (/home/oracle/.ssh/id_rsa):”  Pressionei Enter
Na mensagem “Enter passphrase (empty for no passphrase):”  Enter de novo
Na mensagem “Enter same passphrase again:” Pressione Enter outra vez
A mensagem “Your identification has been saved in  . ” demonstra o arquivo onde está a chave privada do servidor.
Geralmente, o arquivo fica dentro do home do usuário, dentro do diretório .ssh/ , com a extensão .pub

— Veja os comandos que utilizei —


cd  –> para entrar no diretório home do usuário corrente
cat .ssh/id_rsa.pub –> para obter a chave gerada.

O conteúdo do arquivo *.pub  foi copiado em todos os outros servidores, onde os logs de backup são gerados. No caso do AIX, este arquivo tem o nome id_rsa.pub.
Em tais servidores, copiei a linha de código gerada no arquivo .ssh/authorized_keys, que fica no diretório home do usuário do SO.

B – Criar o script para reunir os logs

Depois de fazer o trabalho pesado, que é entrar servidor por servidor e copiar a chave pública, no servidor de destino eu criei um script para “puxar” as últimas 20 linhas de cada log de backup:
Basicamente, os comandos inseridos dentro do script tem a seguinte sintaxe:
ssh <usuario>@<servidor> “tail -20 /<caminho>/<arquivo_de_log>”

Por exemplo

ssh oracle@serverora41"tail -20 /usr/local/logs/rman_full_sdemp.log" >> /usr/local/logs/logs_centralizados.log

Com isso, os logs de backup ficaram em apenas 1 arquivo (no exemplo acima, dentro de “logs_centralizados.log”).

Para melhorar, agendei a execução deste script 1 vez ao dia, e o resultado está sendo enviado por e-mail. Desta fora, 30 minutos tranformam-se em 3: o tempo de abrir o e-mail!
Bem, com isso, posso dizer que meus scripts de carnaval vão me ajudar o ano todo… Epa, peraí: Será que o ano realmente começa no carnaval?

Se for assim, feliz ano novo! Desejo a todos muitos scripts de sucesso!

Para saber mais sobre ssh:

PS: Um grande abraço para meus colegas de trabalho Alan e Hernani, grandes incentivadores na instalação do Linux no note, e elaboração dos scritps.

lilian

lilian

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Marcações:
plugins premium WordPress