Instalar Tcl no CentOS 7

Apesar de pouco freqüente, de vez em quando eu utilizo a Tcl para criar e rodar alguns scripts de linha de comando em servidores linux e também, de vez em quando, escrevo algumas funções para o PostgreSQL utilizando a linguagem procedural PL/Tcl.

A versão da Tcl que vem por padrão no CentOS 7.1 é a Tcl 8.5.13. Sou adepto de sempre usar os pacotes disponíveis nas distribuições linux, não instalando nada por conta própria, mas a Tcl (e o PostgreSQL) são exceções: eu sempre baixo os fontes e compilo as versões mais novas.

Assim, para instalar a última versão disponível da Tcl, a 8.6.4, faça o seguinte:

  1. No site da Tcl/Tk (http://www.tcl.tk) baixe o fonte da última versão (hoje em dia é a 8.6.4, procure pelo arquivo “tcl8.6.4-src.tar.gz”), e salve no diretório /usr/local/src.
  2. Descompacte o códio fonte e vá para o diretório /usr/local/src/tcl8.6.4/unix.
  3. Execute o seguinte comando configure:
    ./configure --prefix=/usr/local/lib/tcl8.6.4 --enable-threads --enable-64bit
  4. Se o comando configure não retornar nenhum erro, execute o comando make.
  5. Se o comando make não retornar nenhum erro, execute o comando make test. Se os testes de compilação foram concluídos com sucesso, você verá a seguinte mensagem:
    Tests ended at Wed Sep 23 22:28:32 BRT 2015
    all.tcl: Total 116     Passed 116     Skipped 0     Failed 0
  6. Agora execute o make install. A Tcl será instalada no diretório /usr/local/lib/tcl8.6.4.
  7. Crie os seguintes links simbólicos (digite cada comando em uma única linha!):
    ln -s /usr/local/lib/tcl8.6.4/bin/tclsh8.6 /usr/local/lib/tcl8.6.4/bin/tclsh
    
    ln -s /usr/local/lib/tcl8.6.4/bin/tclsh8.6 /usr/local/bin/tclsh
  8. Edite o arquivo .bashrc dos usuários que utilizarão a Tcl e altere a variável:
    export LD_LIBRARY_PATH=/usr/local/lib/tcl8.6.4/lib:$LD_LIBRARY_PATH
  9. Por fim, teste se a Tcl está instalada e se é thread-safe (tem que retornar 1):
    [usuario@servidor ~]$ tclsh
    % info exists tcl_platform(threaded)
    1
    % exit

Agora você já tem a versão mais nova da Tcl instalada, compilada para 64 bits e thread-safe.

Conversor de texto para ASCII Art

Você quer mudar o visual de sua assinatura de e-mail ou o banner SSH/FTP em seu servidor por algo mais nerd? Experimente usar o Text ASCII Art Generator (TAAG)!

Essa pequena aplicação web transforma um texto qualquer que você digitou em uma ASCII Art! Existem mais de 300 fontes para sua escolha e algumas outras opções. Por exemplo, o nome Elis:

$$$$$$$$\ $$\ $$\           
$$  _____|$$ |\__|          
$$ |      $$ |$$\  $$$$$$$\ 
$$$$$\    $$ |$$ |$$  _____|
$$  __|   $$ |$$ |\$$$$$$\  
$$ |      $$ |$$ | \____$$\ 
$$$$$$$$\ $$ |$$ |$$$$$$$  |
\________|\__|\__|\_______/
.------..------..------..------.
|E.--. ||L.--. ||I.--. ||S.--. |
| (\/) || :/\: || (\/) || :/\: |
| :\/: || (__) || :\/: || :\/: |
| '--'E|| '--'L|| '--'I|| '--'S|
`------'`------'`------'`------'
EEEEEEEEEEEEEEEEEEEEEElllllll   iiii                   
E::::::::::::::::::::El:::::l  i::::i                  
E::::::::::::::::::::El:::::l   iiii                   
EE::::::EEEEEEEEE::::El:::::l                          
  E:::::E       EEEEEE l::::l iiiiiii     ssssssssss   
  E:::::E              l::::l i:::::i   ss::::::::::s  
  E::::::EEEEEEEEEE    l::::l  i::::i ss:::::::::::::s 
  E:::::::::::::::E    l::::l  i::::i s::::::ssss:::::s
  E:::::::::::::::E    l::::l  i::::i  s:::::s  ssssss 
  E::::::EEEEEEEEEE    l::::l  i::::i    s::::::s      
  E:::::E              l::::l  i::::i       s::::::s   
  E:::::E       EEEEEE l::::l  i::::i ssssss   s:::::s 
EE::::::EEEEEEEE:::::El::::::li::::::is:::::ssss::::::s
E::::::::::::::::::::El::::::li::::::is::::::::::::::s 
E::::::::::::::::::::El::::::li::::::i s:::::::::::ss  
EEEEEEEEEEEEEEEEEEEEEElllllllliiiiiiii  sssssssssss
   ,ggggggg,                        
 ,dP""""""Y8b ,dPYb,                
 d8'    a  Y8 IP'`Yb                
 88     "Y8P' I8  8I  gg            
 `8baaaa      I8  8'  ""            
,d8P""""      I8 dP   gg     ,g,    
d8"           I8dP    88    ,8'8,   
Y8,           I8P     88   ,8'  Yb  
`Yba,,_____, ,d8b,_ _,88,_,8'_   8) 
  `"Y8888888 8P'"Y888P""Y8P' "YY8P8P

Bem, você já entendeu. Escreva seu texto e veja como ele fica com uma das 314 fontes diferentes e escolha o que mais agradar.

Script de backup para o MySQL ou MariaDB

Segue um script simples de backup para o MySQL ou o MariaDB. O script tem como pré-requisito a criação de um usuário específico para backup, com privilégios restritos (altere o que está em vermelho e itálico):

#!/bin/bash

# backup_mysql.sh
# Script para backup simples de um ou mais bancos de dados MySQL/MariaDB

# Dados de conexão:
#------------------
host="localhost"
bancos="nome_do_banco" # Se mais de um, separar por espaços
usuario="nome_do_usuario"
senha="senha_do_usuario"
data=`date +"%Y-%m-%d_%H-%M-%S"`
arquivo="/path/do/diretorio/de/backup/${data}"

# Configura opções:
#------------------
opcoes="--add-drop-database --add-drop-table --add-locks --comments --complete-insert --create-options --disable-keys --default-character-set=utf8 --extended-insert --dump-date --lock-tables --order-by-primary --quick --routines --set-charset --triggers"

# Faz backup:
#------------
for i in `echo $bancos`
do
  mysqldump -h $host -u $usuario --password=$senha --databases $i -r ${arquivo}_${i}.sql
done

O script acima fará um backup de todos os bancos listados, gerando arquivos com o nome de: YYYY-MM-DD_HH-MI-SS_nome_do_banco.sql.

Obviamente o usuário que faz o backup deve ter permissão em todos os bancos de dados.

Agora configure o cron para rodar automaticamente o script e apagar os backups mais velhos que 5 dias. Coloque isso em seu crontab (altere o que está em vermelho itálico):

# Faz o backup do MySQL, todo dia as 19:00h:
00 19 * * * /path/ate/o/script/backup_mysql.sh


# Apaga os backups antigos do MySQL (backups com mais de 5 dias),
# todo dia as 19:30h:
30 19 * * * find /path/do/diretorio/de/backup -name "*.sql" -mtime +5 -exec rm -f {} \;

Agora você já tem um script simples para o backup de seus bancos de dados. Obviamente você deverá copiar esse backup para algum outro host ou mídia de backup.

Usuário específico para backup no MySQL (MariaDB)

Muitas vezes precisamos escrever scripts de backup para o MySQL (ou o MariaDB) que armazenam a senha de acesso ao banco de dados. Obviamente se seu servidor for comprometido e o hacker tiver acesso ao script de backup, ele pegará a senha do banco de dados de presente.

Um jeito mais seguro de usar scripts com senhas de usuários para backup é criar um usuário específico para backup, com dois privilégios: SELECT e de LOCK TABLES. Um hacker que conseguisse essa senha específica do usuário de backup ainda conseguiria fazer algum estrago (dar um lock me alguma tabela), mas não conseguiria apagar um banco de dados ou alterar os dados.

Para aumentar um pouco a segurança de seus scripts de backup, crie o usuário específico, dê os grants e use esse usuário/senha em seus scripts. Entre no MySQL (ou MariaDB) como usuário root e faça o seguinte (substitua os nomes em itálico sublinhado de acordo com seu sistema):

CREATE USER usuario@localhost
IDENTIFIED BY 'senha';

GRANT SELECT, LOCK TABLES
ON nome_do_banco_de_dados.*
TO usuario;

FLUSH PRIVILEGES;

Agora você tem um usuário que só pode dar SELECT e LOCK TABLES, e apenas para o banco de dados que você especificou.

Use esse usuário/senha menos privilegiado em seus scripts de backup.

Desktop Windows perfeito para trabalho

OK, o título é falso. Quando se fala em “perfeito”, sem qualificar “para que”, não temos como saber se o perfeito é realmente perfeito ou completamente errado para uma determinada situação.

Então, melhorando o título: desktop windows perfeito para o trabalho de desenvolvimento de aplicações Oracle e para a administração de servidores linux. Obviamente se você trabalha com outra coisa, por exemplo, design gráfico, edição de vídeos ou outra coisa qualquer, as configurações abaixo serão inúteis para você.

De qualquer forma, aqui vai minha receita de desktop perfeito:

  1. Windows 7 ou Windows XP (se você for o triste proprietário de um Windows 8, é imprescindível o uso do Classic Shell para torná-lo minimamente utilizável);
  2. Meinberg NTP e o Meinbert NTP Time Server Monitor, para manter o horário de seu Windows sempre correto;
  3. WinRAR para compactar/descompactar arquivos (vantagem adicional: a key para o WinRAR também serve para o RAR para o Linux);
  4. 7-Zip para compactar/descompactar arquivos;
  5. 7capture, um utilitário freeware para capturar screenshots.
  6. Adobe Reader;
  7. Mozilla Firefox;
  8. PuTTY, para acesso aos servidores linux;
  9. Xming X Server for Windows, para você rodar um servidor X localmente em seu desktop Windows, podendo, através do PuTTY, abrir aplicações gráficas dos servidores linux diretamente em seu desktop Windows;
  10. WinSCP, um cliente FTP seguro para Windows;
  11. TrueCrypt, um software de criptografia de arquivos, partições, discos, etc. (temporariamente descontinuado, mas imprescindível);
  12. Java JDK, para os plugins do Firefox e outras aplicações Java (se precisar de alguma versão antiga do Java, procure no Java Archive);
  13. Ext2Fsd, para montar e abrir partições Linux no Windows;
  14. LibreOffice, para trabalhos gerais (texto, planilhas, slides, etc.);
  15. Link Shell Extension, para você (finalmente!) poder criar no Windows aqueles maravilhosos links simbólicos e hards links que facilitam a vida de qualquer usuário Linux;
  16. RealVNC, para você permitir o acesso remoto ao seu desktop Windows e acessar qualquer outro computador rodando um VNC Server;
  17. Datanamic Dezign for Databases (e outras ferramentas da Datanamic), para modelagens de diagramas entidade relacionamento e mais um montão de ferramentas úteis para quem trabalha e desenvolve aplicações baseadas em banco de dados;
  18. ESET Smart Security, para proteção contra vírus, etc.;
  19. Git e/ou Mercurial, para o controle de versões de seu projeto;
  20. ImageMagick, para alguns utilitários de linha de comandos para transformações em batch de imagens;
  21. Gimp, o melhor editor de imagens opensource!
  22. Notepad++, para dar adeus ao bloco de notas.
  23. SQL Monitor for Oracle, para monitorar e capturar o tráfego de SQL entre o cliente e o servidor Oracle;
  24. Pixeur, um utilitariozinho color picker muito simples e prático;
  25. SmartGit, um front-end java para repositórios Git;
  26. SmartCVS, um front-end java para repositórios CVS;
  27. SmartSVN, um fornt-end java para repositórios SVN;
  28. SmartSynchronize, um utilitário java para sincronização de árvores de diretórios e arquivos;
  29. Oracle SQL Developer, um sistema java para administração e desenvolvimento com o banco de dados Oracle;
  30. Oracle Forms & Reports, sistema completo para desenvolvimento de aplicações Oracle (a versão 6i não está mais disponível para download).