Post em Destaque

Iniciando com o FreeBSD

Acreditava que seria fácil fazer uma pequena apresentação sobre FreeBSD, mas acredito que muitos que chegaram até aqui ou os que ainda estão por vir, não serão tão “marinheiros de primeira viagem”. E que nesse início de trabalho possamos contar com a ajuda de todos vocês. Muito...

Leia mais...

10 dicas importantes sobre Shell Script

Posted by lgvalentim | Posted in Shell Script | Posted on 23-07-2012

Tags:

1

Como muitos programadores sabem, organização é tudo quando falamos sobre ” saber programar “. Uma pequena aula de “etiqueta” para quem está chegando ou até mesmo para aqueles que querem aprender a se organizar. Seguem 10 dicas úteis para todos nós, programadores, experientes ou não.

1. Especificar qual SHELL será utilizado

É pré-requisito em qualquer programa escrito em SHELL SCRIPT definir qual SHELL será utilizado.

A imagem acima ilustra como seria em sistemas GNU/Linux. No FreeBSD seria: #!/usr/local/bin/bash

 

2. Comentários e descrição do Script

Esta seção tem como objetivo descrever o objetivo do script e suas funcionalidades. Isso te ajuda a lembrar porque o script foi escrito, e para qual função.

3. Declarar variáveis

Muitas vezes, observo scripts sem declaração de variáveis. Isso impacta no funcionamento dos comandos ao longo do script.

Lembre-se: Quando o script é executado, será aberto um novo SHELL e com isso nenhuma variável declarada de sua sessão atual será utilizada. Declarar variáveis é PRIMORDIAL, assim como em qualquer outra linguagem de programação.

4. Identação

Muitas pessoas acreditam que identar scripts não é necessário. Para funcionar não, porém para entendimento próprio ou de outro DBA / analista é extremamente necessário. identação é sinônimo de organização e facilita o entendimento posterior.

5. Comentários fase-a-fase

Procure descrever em comentários o que cada parte do script irá executar. Isso lhe ajudará a fazer melhorias e “debugar” possíveis problemas futuros.

6. LOGs

Mantenha logs de todos os seus scripts. Preferencialmente especificando o arquivo de LOG dentro do script, como variável. Para análise posterior em execuções será muito mais fácil encontrar possíveis erros.

Utiliza preferencialmente arquivos de LOGs com datas, isso previne que arquivos de LOGs sejam sobrescritos.

7. Corpo do Script (Body)

Utilize suas variáveis declaradas no início do script. Isso ajuda a não fixar valores, podendo reaproveitar o script posteriormente.

8. Valide a execução de cada comando

De nada adianta um script que executa cem tarefas e não valida nenhuma. Isso é o mais COMUM de se ver em scripts. Um comando executao sem análise de “Return Code” não tem integridade alguma. Procure sempre analisar passo-a-passo sua execução.

9. Mantenha nomes coerentes

Procure manter o nome de seus scripts coerentes. Procure relacionar o nome com a atividade. Ex: “bkp_rman_full.sh”, “bkp_expdp_full.sh”, etc..

10. Valide sempre as execuções de seus scripts

Este provavelmente é o passo mais importante. Valide sempre as execuções de seus scripts, acompanhe os logs (diários, mensais etc). Neles você poderá encontrar erros ou melhorias. Se possível, implemente algum recurso de monitoração.

Fonte:Imasters

Share Button

Você já fez ou está em dia com os seus Backups? Hoje é Sexta-Feira 13!

Posted by gondim | Posted in Shell Script | Posted on 13-04-2012

Tags:,

0

Para quem ainda não tem um script para fazer seus backups. Abaixo um script que utilizo muito e venho compartilhar com todos vocês. Tirando a brincadeira de ser Sexta-Feira 13 um bom backup já salvou minha cabeça muitas vezes e pelos diversos motivos. Alguns deles:

1) HD foi pro saco. Esse sem dúvida é o mais comum.
2) Programador fez uma besteira e ferrou uma determinada tabela da base de dados MySQL. Aconteceu 2 ou 3 vezes comigo. Não sou o programador, só avisando. rsrsr
3) O mesmo programador apagou alguns arquivos de desenvolvimento dele.

E por aí vai… não importa o que foi apagado e sim o dano que isso lhe causará se não tiver o devido backup.
Ou como eu diria em outras palavras: “O salame vai vir você só vai ter que escolher se inteiro ou fatiado!”

Para esse script funcionar basta configurar as variáveis no topo e criar o diretório definido na variável TEMP. Não esqueça de configurar a senha e usuário do mysql para que o script possa fazer os backups e o seu e-mail para que recebas uma notificação sempre que o backup for concluído.

Outra coisa: esse script na verdade gera o backup sempre no mesmo lugar do servidor. Você deveria ter um outro script para coletar esse backup já no Servidor de Backup e armazená-lo conforme suas necessidades. Ex.: com separação por data, mas isso colocarei em um próximo post. Fiquem à vontade em melhorar esse script e se puderem compartilhar as melhorias, elas serão muito bem vindas.  😀

Share Button

Facilitando a vida do DNSSec

Posted by gondim | Posted in Shell Script | Posted on 13-04-2012

Tags:,

0

Alguns admins já usam o DNSSec e provavelmente já fizeram alguma ferramenta para administrar sua lista de domínios. Agora se você tem diversos domínios para converter em DNSSec, precisa fazer a atualização dos mesmos periodicamente e não possui nenhuma ferramenta para isso, seus problemas acabaram. rsrsr Vou mostrar aqui 2 scripts que fiz a long long time que podem lhe ajudar nessa tarefa. Ah! Se você não sabe ainda o que é o DNSSec, porque ele é necessário e como ele funciona aqui vai uma leitura bem bacana nesse link: Porque DNSSec

Então vamos para o nosso primeiro script, o dnssecconv.sh, onde este irá pegar todos os arquivos de domínios com extensão .db, criar as chaves deles, fazer as devidas modificações no named.conf e gerar um arquivo com os dados que precisa para cadastro no Registro.br:

O script dnssecconv.sh deve estar no mesmo diretórios dos arquivos de domínio e antes de rodá-lo faça um backup, porque não me responsabilizo por qualquer dano que esse script possa causar. Estou aqui para ajudar e não para ser responsabilizado por algo.  🙂

Em tempo o arquivo gerado com as informações que você vai precisar é este: dnsseclist.txt

#!/bin/sh
echo “DNSSecConv – 1.1 – Copyright 2011” > dnsseclist.txt
echo “Marcelo Gondim ” >> dnsseclist.txt
echo “http://www.bsdinfo.com.br” >> dnsseclist.txt
echo “`date`” >> dnsseclist.txt
echo “” >> dnsseclist.txt
echo “DNSSEC List” >> dnsseclist.txt
echo “===========” >> dnsseclist.txt
for lista in `ls *.db`; do
if [ “$lista” != “empty.db” -a “$lista” != “localhost-forward.db” -a “$lista” != “localhost-reverse.db” ]; then
   dominio=”`echo $lista|sed -e ‘s%.db%%g’`”
   if [ “`ls K$dominio.*.key 2> /dev/null`” == “” ] ; then
      dnssec-keygen -r /dev/urandom -f KSK -a RSASHA1 -b 1024 -n ZONE $dominio
      dnssec-signzone -S -z -o $dominio $dominio.db
      sed -i ” -e ‘s%$dominio.db%$dominio.db.signed%g’ /etc/namedb/named.conf
   fi
   ds_field=”`head -1 dsset-$dominio.|awk ‘{print $4}’`”
   hash_field=”`head -1 dsset-$dominio.|awk ‘{print $7}’`”
   echo “$dominio || $ds_field || $hash_field” >> dnsseclist.txt
fi
done

O segundo script é mais simples e só serve para atualizar as chaves, porque de tempo em tempo o Registro.br solicita essa atualização senão o domínio pára de funcionar. Esse script se chama dnssecsync.sh e também deve ser rodado no diretório onde se encontram os arquivos de domínios. Mais uma vez não esqueça do backup. 😉

#!/bin/sh
# DNSSecSync – 1.1 – Copyright 2011
# Marcelo Gondim
# http://www.bsdinfo.com.br
for lista in `ls *.db`; do
   if [ “$lista” != “empty.db” -a “$lista” != “localhost-forward.db” -a “$lista” != “localhost-reverse.db” ]; then
      dominio=”`echo $lista|perl -i -pe ‘s%.db%%g’`”
      dnssec-signzone -S -z -o $dominio $dominio.db
   fi
done

 

Share Button