sexta-feira, agosto 12, 2011

Script para backup de DataBases SQLServer - parte 01

Um problema comum no mundo de banco de dados são os backups. Realizar diversos backups de diversas bases manualmente é tarefa de estagiário corno. As vezes as coisas podem parecer mais complicadas do que realmente são. Por isso esse tutorial mostrará como fazer o backup de suas bases de seu banco de forma simples e rápida. Usar o SQLManager e os planos de manutenção são uma boa. Mas as normalmente o bom e velho script tem um comportamento mais simples e mais fácil de se manobrar.
Como podemos gerar backups usando o T-SQL? Simples:
BACKUP DATABASE DBNAME TO DISK = "c:\backup.bak"

Esse seria o mais simples de todos, fazendo de um só banco, vc colocando o nome do seu banco. Mas e se você tiver diversos bancos e não está com a menor paciência pra escrever várias linhas iguais a essa para fazer o backup de cada banco? Ou ainda e se você possuir diversos servidores, com cada servidor com diversos bancos que precisam ter um backup e não terá tempo para escrever nome por nome de banco?
Bem, agora sim as coisas poderiam ficar complicada, mas a verdade é que essa complicação não existe. Veja:


Simples e objetivo, resolve seu problema de fazer diversos backups de uma única vez e sem ter que ficar colocando nome por nome. Esse backup é um backup full. Você pode procurar formas de fazer backups incrementais e coisas assim...

Nos próximos talvez eu me aprofunde nisso.

quarta-feira, agosto 10, 2011

FreeNAS 8.0

O que há de novo no 8.x

FreeNAS™ 8.x representa uma reimplementação completa desde a série .7 do FreeNAS™. Em outras palavras, FreeNAS™ foi reescrito "from scratch" e novas funcionalidades foram adicionadas de forma estável. Isso significa que nem todas as funcionalidades da versão .7 foram reimplementadas e nem todas as funcionalidades disponpíveis no FreeNAS™ .7 estarão disponíveis no FreeNAS™ 8.x.  As diferenças mais notáveis entre as duas versões seguem abaixo:

O versionamento mudou para seguir o mesmo número usado pela versão do FreeBSD. FreeNAS™ 8.0.1 é baseado no FreeBSD 8.2; esse branch do FreeNAS™ vem com funcionalidades completas.Esse número de versão irá ser incrementado depois para 8.1 e depois para 8.2.

  • Baseado no NanoBSD no lugar do m0n0wall
  • Design foi modificado de monolitico para modularizado, dessa forma permite a criação de plugins e o usuário pode instalar e configurar apenas os módulos que ele precisa.
  • GUI reescrita em Django para permitir uma futura expanção.
  • Nova GUI é a padrão, mas a antiga ainda esta disponível se você configurar no appname e depois FreeNAS™ system's URL (e.g. http://192.168.1.1/services)
  • Melhorado o sistema de permissões, usuários e grupos dos volumes e datasets.
  • ZFS parametrização por dataset, assim como quotas, onde são adicionados
  • LSI 6 gbps HBAs agora é suportado
  • Migrado do rc.d init system
  • Update dos ports do FreeBSD 8.2
  • Adicionado suporte ao iSCSI
  • Suporte do 3ware 6bps RAID controllers foram adicionados com um utilitario CLI utility, tw_cli, para gerenciamento 3ware RAID controller
  • Adicionada habilidade para agendar snapshots, criar one-time snapshots, clone snapshots, que podem ser exportados e compartilhados como qualquer outro dataset, e é possível fazer rollback para um snapshot anterior
Notáveis funcionalidades oferecidas no FreeNAS™ 8.0.1 incluem:
  • suporte a AFP, CIFS, FTP, NFS, SSH (incluindo SFTP), e TFTP como mecanismos de compartilhamento
  • supports exporting file or device extents via iSCSI
  • suporta Active Directory ou LDAP para autenticação de usuário
  • suporta sistema de arquivos UFS2, incluindo gmirror, gstripe, e graid3
  • suporta ZFS como principal sistema de arquivos, habilitando muitas funcionalidades não disponiveis UFS2 como sistema de cotas, snapshots, compressão, replicação, e datasets para compartilhamentos de subconfigurações de volumes via CIFS. Suporta zpool versão 15.
  • procedimento de atualização tira vantagem da capacidade do NanoBSD de escrever o sistema operacional em uma partição inativa, permitindo uma fácil reversão de uma atualização indesejável.
  • automática sistema de notificações sobre eventos do controlador LSI RAID  (requer serviço de e-mail configurado)
  • Django interface grafica de gerenciamento
Hora de começar os testes com essa nova versão cheia de novidades? Sim e não. Eu indico que deem uma boa lida nos problemas conhecidos antes de partirem para fazer o upgrade dos NAS de vocês e também na comparação entre as duas versões.

    terça-feira, agosto 09, 2011

    Usuários conectados ao seus servidor MySQL

    As vezes se faz extremamente necessário saber quem esta acessando nossa base de dados naquele momento. O MySQL apesar de ter ferramentas gráficas até bem maduras, diferente do postgreSQL(na minha opnião). Você terá sempre a possibilidade de usar tudo via terminal.
    Apesar de conseguir fazer isso facilmente através do comando "SHOW PROCESSLIST", quando possuo muitos processos fica um tanto difícil de conseguir verificar todos os usuários. A saída do "SHOW PROCESSLIST" seria a abaixo descreita no meu PC que não esta sendo acessado por ninguém além de mim:
    fonte: sholimoid

    segunda-feira, agosto 08, 2011

    Conectando MySQL e Pyhton

    Fazer um script em Python que conecte-se ao MySQL é bastante simples. Mesmo que você não tenha tido qualquer experiência anterior com Python.
    Claro que para prosseguirmos precisaremos ter o Python e o MySQL já instalados. Depois disso precisaremos fazer o import dos módulos MySQLdb e da sys. Para o MySQL você só precisará de um usuário que tenha permissão para conectart ao banco e realizar operações.
    O post original o autor usa Python v2.5, MySQL version 5.5.8,com Mac OS X 10.6.8.Eu estou usando Python 2.6.5, MySQL 5.1.41 e Ubuntu 10.04.
    Aqui estão os links caso vá realizar esse trabalho no Windows.

    MySQL – http://dev.mysql.com/downloads
    Python – www.python.org/getit/
    MySQLdb module – http://sourceforge.net/projects/mysql-python/


    Here is what the script looks like when I run it from the command line:
    Server version: 5.1.41-3ubuntu12.10

    A partir daí é só explorar as possibilidades já que assim é feita a conexão.
    fonte: Scripting Mysql

    sábado, julho 30, 2011

    Servidor Web Simples com Python

    As vezes um servidor web se faz necessário para testes simples ou para pequenos compartilhamentos internos de sua intranet. E o tempo de setup de um servidor Apache ou ISS para uma tarefa tão trivial quanto essa pode não ser tão interessante. Depender a TI para configuração as vezes é um parto. E algumas outras vezes baixar e instalar tudo demandará tempo demais. Recomendo usar o servidor web que vem embutido no Python(confeço que não sabia até algum tempo).
    Você só precisará de uma linha para configurá-lo:
    $cd [diretorio]
    $ python -m SimpleHTTPServer


    Depois disso você terá um servidor web rodando na porta 8000 e será exibida a seguinte mensagem:
     Serving HTTP on 0.0.0.0 port 8000 ...


    Caso queira mudar a porta padrão do servidor web para um teste faça:
    python -m SimpleHTTPServer 8080


    Você poderá acessa-lo no seu navegador através do loopback(http://127.0.0.1:8080) ou pelo seu endereço IP (http://192.168.0.2:8080)

    Simples não? Ainda farei alguns testes para ver o que isso aguenta. Não deve ser tanto, mas é interessante.

    Fonte Original: [dicas-l]

    segunda-feira, maio 30, 2011

    Subprocess com Python - Tratamento de erros - parte 2

    O valor de retorno do comando call() é o mesmo código de saída do programa que foi chamado. O comando de chamada é responsável por interpretar e detectar possiveis erros. Para tal a biblioteca subprocess possui o check_call(), que funciona de maneira parecida com o call(), porém no check_call() o código de saída é checado, e caso esse código indique um erro. Será feita uma chamada a uma exescessão chamada CalledProcessError.
    Por exemplo:


    fonte: doughellmann

    sexta-feira, maio 27, 2011

    Subprocess com Python - Executando comando externo- parte 1

    Comunicão entre processos com Python.
    O módulo subprocess permite você criar novos processos através de Python e assim se conectar aos seus inputs/outputs/erros pipes e obter seu código de retorno.

    Rodar comando do shell:
    Para executar um comando sem interagir com ele faça a chamada call() assim como faria com os.system()

    import subprocess
    # Simple command
    subprocess.call(['ls', '-1'], shell=True)

    Com o comando acima teremos a seguinte saída:
    $ python subprocess_os_system.py

    __init__.py
    index.rst
    interaction.py
    repeater.py
    signal_child.py
    signal_parent.py
    subprocess_check_call.py
    subprocess_check_output.py
    subprocess_check_output_error.py
    subprocess_check_output_error_trap_output.py
    subprocess_os_system.py
    subprocess_pipes.py
    subprocess_popen2.py
    subprocess_popen3.py
    subprocess_popen4.py
    subprocess_popen_read.py
    subprocess_popen_write.py
    subprocess_shell_variables.py
    subprocess_signal_parent_shell.py
    subprocess_signal_setsid.py


    E desde que tenhamos shell=True teremos acesso as variáveis de shell também.
    import subprocess
    # Command with shell expansion
    subprocess.call('ls -1 $HOME', shell=True)


    Dessa forma teremos a saída:
    $ python subprocess_shell_variables.py

    /home/maltzsama


    Agora já sabemos executar um comando externo do sistema operacional ou mesmo um executavel qualquer usando subprocess, no próximo post veremos como fazer tratamento de erros em subprocess.

    fonte: doughellmann.com

    Gedit como IDE Python

    Venho programando em Python há algum tempo, já até escrevi um post mostrando como usar o Komodo Edit como um editor Python.
    Mas acredito que a maioria como eu usa Linux + Python para programar. Existem diversos editores no mundo Linux, muitos usam o EMAC(não me agrada muito), Vi, nano. Também existem algumas IDE's como o proprio Eclipse e o Netbeans(acho que com suporte descontinuado). Mas sempre usei muito mais o Gedit, pela simplicidade e capacidade de extenção com plugins.
    Então podemos começar colocando os plugins básicos do Gedit para facilitar nossas vidas. Algumas distribuições já vem instalados. Caso contrario faça:

    Arch Linux
    pacman -Sy gedit-plugins
    ubuntu
    sudo apt-get update
    sudo apt-get install gedit-plugins

    Após a instalação desses plugins padrões você poderá habilitalos da seguinte forma:
    Editar->Preferências->Plugins


    Depois de selecionar os principais plugins que serão utilizados, recomendo:
    Os plugins que não são links é porque já foram automaticamente instalados com o pacote gnome-plugins. Os outros plugins que possuem links você precirá baixá-los e descompactalos na seguinte pasta.
    .local/share/gedit/plugins/ ou /usr/lib/gedit/plugins/, se você quiser os plugins já instalados para qualquer usuário.

    Você ainda tem a possibilidade de configurar o CVS, ou GIT para funcionar como controle de versão do seu projeto. Mas isso é assunto pra outro post. 

    quinta-feira, maio 05, 2011

    Instalação do Python no MS-DOS/FreeDOS

    Existem interpretadores Python para diversas arquiteturas além de Linux, Windows e Mac. Você pode consultar as arquiteturas disponiveis aqui. Dentre elas esta a implementação para DOS. Mas porque instalar Python em MSDOS? Bem apesar de existir os famoses arquivos em lote ou bat-files sabemos que eles possuem muitas restrições e incapacidades e para conseguirmos transpor essa barreira podemos, mais uma vez, contar com Python.
    Existe o site da caddit que disponibiliza a versão PythonD 2.4.2 Release 1.0 que é nada mais que um arquivo zip contendo os executaveis do Python.
    Agora como colocar isso para funcionar? Inicialmente, claro, é preciso descompactar essa pasta dentro da sua partição DOS. Após isso feito é importante setar algumas coisas no autoexec.bat.


    SET PATH=%PATH%;c:\pyd\bin\python
    SET PYTHONHOME=c:\pyd\
    SET PYTHONCASEOK=1


    Depois de adicionar essas linhas ao final do autoexec.bat vc só precisará reiniar o computador e terá tudo pronto para usar.

    O comando para iniciar o python no DOS é #pythond

    segunda-feira, abril 04, 2011

    wxFormBuilder

    Nos últimos 2 ou 3 anos venho programado quase que exclusivamente em python. Uma linguagem muito divertida, fácil e produtiva por sinal. Mas uma coisa que sempre sofri um pouco foi ter que criar interfaces gráficas através de linha de comando que acabava sendo pouco produtivo no final das contas(me desculpem os fã-boys do shell, mas não é produtivo criar componente por componente).
    Finalmente, depois de algum tempo desenvolvendo para modo-texto e fazendo interfaces o mais simples possível. Vi outro dia na lista de discursão de python um programa muitissimo interessante. O tal do wxFormBuilder, simplesmente perfeito.
      
    Reclamei durante anos da forma que o Glade trabalhava, criando aquele xml dos infernos, ou mesmo usando aqueles pequenos projetos que transformava o XML em um código python eu achava simplesmnete chato.
    O PyQT eu nunca usei de fato. Mas o WxFormBuilder parece ser fão da filosofia KISS(keep it simple, stupid).
    Ele é capaz de gerar os códigos em C++, Pyhton e XML. Vale a pena conferir e ganhar ainda mais produtividade.

    segunda-feira, março 28, 2011

    Prototipação de Telas

    Alguns aqui devem trabalhar com prototipo de telas de sistemas. Alguns provavemente devem usar por muitas vezes o GLADE para fazer os seus modelos. Mas na minha opniao. o GLADE é um lixo. Outro dia procurando esse tipo de ferramenta encontrei o Pencil Project. Ferramenta realemnte muito interessante. Mantido pela Mozilla a possibilidade de ver esse projeto crescer é muito grande.
    Abaixo uma screenshot:

    sexta-feira, fevereiro 04, 2011

    Facilitando a vida da TI com CloneZilla e DRBL


    Você provavelmente já teve que configurar e instalar windows em diversas máquinas de um escritório ou lan-house. Deve ter tentado usar o GHOST, mas notou que ele não funciona nada bem com a nova versão do Windows 7 e nao funciona nada bem com sistemas de arquivos EXT4. Enfrentamos esse problema durante um tempo usando dump de HD mas era lento e as vezes dava uns erros estranhos.
    A solução para isso veio do CloneZilla Linux, um live-cd que permite você clonar HDs, ou partições de diversos tipos de sistemas de arquivos. Uma solução extremamente interessante. Mas que pode se tornar ainda melhor ao se usar o DRBL como um servidor CloneZilla. Possui uma configuração simples e bastante rápida. Com ela você pode criar perfis de máquinas e distribuir esses perfis através da rede. Você pode ver mais detalhes a respeito do DRBL aqui.
    Mas vamos ao que interessa. Configurar e usar.
    Em uma máquina com o Debian ou Ubuntu já instalados(recomendo o Debian pela estabilidade) deve fazer o seguinte:
    Incialmente você deve adicionar o repositorio dos pacotes do DRBL
    wget -q http://drbl.org/GPG-KEY-DRBL -O- | sudo apt-key add -


    Editar o arquivo /etc/apt/source.list e adicione o seguinte repositorio:
    deb http://drbl.sourceforge.net/drbl-core drbl stable


    Agora você só precisa atualizar o repositório e instalar o serviço:
    #apt-get update
    #apt-get install drbl



    Esse pacote DRBL traz apenas os programas de configurações iniciais. Ainda não é o sistema de distribuição de imagens de SO propriamente dito, para tal você deve fazer:
    #/opt/drbl/sbin/drblsrv -i

    Este comando instalará todos os serviços e pacotes necessários para que sua maquina funcione como servidor.

    Segundo passo é configurar o funcionamento das placas de rede. O ideal é que vc configure sua eth0 ou eth1 com um IP-FIXO para que o DRBL possa usa-lo no servidor DHCP dele entao use o comando:
    #/opt/drbl/sbin/drblpush -i

    Esse comando fará uma serie de perguntas, a maioria a respeito do comportamento que o sistema deve ter, afinal ele serve pra N coisas, tudo depende da sua necessidade. Detalharei com imagens assim que eu editar essa postagem.

    Por ultimo mas não menos importante você configurará como o DRBL vai servir, se ele vai fazer um backup de um HD no servidor ou se ele vai restaurar um backup no cliente. Existem opções para se instalar algumas distros também. Mas no nosso caso usaremos apenas a opção CloneZilla.
    #/opt/drbl/sbin/dcs


    Pronto, agora você pode iniciar suas maquinas e dar boot através da placa de rede para criar o backup de um HD ou restaurar o HD de uma máquina.

    TAR - backup em DVDs

    Sei que hoje a maioria das pessoas tem um HD externo, mas o meu fez o favor de queimar outro dia, então tive que recorrer aos DVDs.  E como eu iria fazer backup da minha /home em DVD? Tinha que separar os arquivos. Logo TAR na /home.

    $ tar cv /home/ | split -b 650m - prefixo.tar


    Uma opção bastante util para dividir em CDs de 650MB como podem ver acima, pode-se usar o tamanho de divisão que quiser. Você pode usar o 1024k para backup em disquetes(hehehe)

    Para recuperar o backup basta fazer o seguinte:
    $ cat prefixo_do_arquivo_dividido.tar.* > novo_arquivo_inteiro.tar
    $ tar xvf novo_arquivo_inteiro.tar


    Façam bom proveito do pequeno comando.