Script que fiz juntamente com o Will de Souza para realizar o backup do banco de dados MYSQL em um servidor CentOs6.
O script vai, na ordem, verificar se o diretório de destino do backup existe, depois realizar o backup, fazer a retenção local de 7 dias, sincronizar com servidor de backup e por último enviar um e-mail com o log  com o procedimento que foi realizado.
Não existe (ainda) tratamento de erro para o script. A compactação foi realizada utitlizando o gzip. Para realizar o sincronização, é necessário autenticação sem senha utilizando certificados. Para saber como é feito, veja o post sobre o assunto: http://161.35.238.43/linux-conexao-ssh-sem-senha/
O envio do e-mail é feito utilizando o servidor postfix instalado localmente.
Para ser executado automaticamente, basta criar um arquivo e adicioná-lo ao Cron do servidor onde está o seu banco de dados.

Fiquem à vontade para modificar o script de acordo com a necessidade do seu servidor. Qualquer dúvida, sugestão e colaboração pode ser feita através dos comentários do blog.
Abraços e até a próxima.

#!/bin/bash
 
### Script para realizar o backup do banco de dados, compactar com gzip, reter os arquivos locais por de 7 dias, sincronizar com o servidor Storage e enviar um e-mail ao final ###
 
### Definindo as Variáveis ###
 
data=`date +%Y-%m-%d`
logbkp="/etc/bancos/backup/mysql/$data.log"             # Local onde o log ficará armazenado.
dircopy="/etc/bancos/backup/mysql/$data"                   # Diretório onde ficará armazenado o backup.
MySQLUser=root                                                                    # Usuário do banco de dados.
MySQLUserPW='senha123'                                                  # Senha do usuário do banco de dados.
listardbs=`mysql -S /var/lib/bancos/mysql/mysql.sock -N -s -u "${MySQLUser}" -p"${MySQLUserPW}" -e 'show databases;'`                         # Caminho do banco de dados e autenticação.
argumentos="--ignore-table=mysql.event --single-transaction -S /var/lib/bancos/mysql/mysql.sock"
email="usuariodoemail@email.com.br"                              # Endereço do e-mail para ser enviado o log.
echo "----------------------------------------------------" >> $logbkp
echo "[$data `date +%Hh:%Mm:%Ss`] Início do script de Backup do MySQL" | tee -a $logbkp
 
### Verificando o Diretório ###
 
if [ -d "$dircopy" ]; then
echo "[$data `date +%Hh:%Mm:%Ss`] Diretório $dircopy já existe" | tee -a $logbkp
else
echo "[$data `date +%Hh:%Mm:%Ss`] Criando diretório $dircopy" | tee -a $logbkp
mkdir $dircopy
fi
 
### Iniciando o Backup e Compactando com gzip ###
 
echo "[$data `date +%Hh:%Mm:%Ss`] Iniciando o Backup da Base de dados!" | tee -a $logbkp
 
for bancodedados in $listardbs; do
if [ $bancodedados != 'performance_schema' ] ; then
echo "[$data `date +%Hh:%Mm:%Ss`] Backup do $bancodedados" | tee -a $logbkp
mysqldump $argumentos -u "${MySQLUser}" -p"${MySQLUserPW}" $bancodedados > $dircopy/$bancodedados.sql
echo "[$data `date +%Hh:%Mm:%Ss`] Compactando o $bancodedados" | tee -a $logbkp
gzip -9 -f "$dircopy/$bancodedados.sql"
fi
done
 
echo "[$data `date +%Hh:%Mm:%Ss`] Fim do Backup!" | tee -a $logbkp
 
### Retenção e Sincronização ###
 
find $dircopy -iname '$data*' -type d -mtime +7 -exec rm -rf '{}' ';'
 
rsync -AagoPprzqe 'ssh -p 22' /etc/bancos/backup/mysql/* root@192.168.1.1:/BACKUP/BANCOS/MYSQL/  # Aqui coloca-se o endereço do servidor remoto de backup.
 
echo "[$data `date +%Hh:%Mm:%Ss`] Fim do script de Backup do MySQL." | tee -a $logbkp
echo "----------------------------------------------------" >> $logbkp
 
### Enviando o E-mail ###
 
lerlogbkp=`cat $logbkp`
echo "$lerlogbkp" | sendmail -F mysqlbackup-$data $email
echo "[$data `date +%Hh:%Mm:%Ss`] E-mail para $email enviado!"

Download do Script

Segue um script em Python 2 para testar se a porta está aberta ou fechada.

#!/usr/bin/python
import socket
ip = raw_input("Entre com o endereco de IP: ")
port = input("Entre com o numero da porta: ")
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
if sock.connect_ex((ip,port)):
    print "A porta", port, "esta fechada"
else:
    print "A porta", port, "esta aberta"

Um pequeno shell script para scanear a rede e saber qual IP está online. Basta executar e colocar a faixa a ser pesquisada. Com o retorno do ping irá aparecer apenas os IPs online.

#!/bin/bash
if [ "$1" == "" ]; then
    echo "Formato: ./ping.sh [endereço da rede]"
    echo "Exemplo: ./ping.sh 192.168.0"
else
    echo "Realizando teste na rede: $1"
    for x in `seq 1 254`; do
    ping -c 1 $1.$x | grep "64 bytes" | cut -d " " -f 4 | sed 's/.$//'
    done
fi