MRTG em um Roteador Linux
Neste artigo mostrarei como monitorar as Interfaces de Rede e também os clientes de um roteador linux utilizando o MRTG. Neste exemplo estou utilizando um Servidor Lunux Ubuntu com regras de NAT, mas pode ser adaptado facilmente para outras distribuições ou necessidades.
Também utizaremos o IPFM que fará a contabilização do tráfego utilizado pelos IPs que passam pelo roteador linux.
Instalando Programas necessários:
# apt-get install mrtg ipfm
Configurando o MRTG
# mkdir /etc/mrtg
# mkdir /etc/mrtg/scripts
# mkdir /var/www/mrtg
O primeiro é o diretório onde fica guardado o arquivo de configuração (normalmente mrtg.cfg). O segundo é onde ficarão os scripts necessários para o monitoramento e o terceiro diretório é onde estarão as páginas criadas para a visualização dos gráficos.
Criando os Scripts
IFVMON.SH (para monitorar os IPs de clientes)
# vi /etc/mrtg/scripts/ifvmon.sh
# Script Feito por Jefferson Aranha Dos Santos
# Jefferson.aranha@gmail.com
# Passando como 1º parâmetro o caminho completo do log do ipfm e 2º
# parâmetro um ip
#!/bin/bash
cat "$1" | grep "$2 " > /dev/null
if [ "$?" -ne 0 ]
then
echo 0
echo 0
else
cat "$1" | grep "$2 " | awk '{print $2"\n"$3}'
fi
MRTG.CFG
Language: brazilian
EnableIPv6: no
RunAsDaemon: Yes
Interval: 5
WorkDir:/var/www/mrtg
Logdir: /var/log/mrtg
Options[_]: bits,growright
#
Target[eth0]:`/etc/mrtg/scripts/ifmon.sh eth0`
Title[eth0]:"Trafego Internet - eth0"
Maxbytes[eth0]:1400000
PageTop[eth0]:<h1>Trafego Internet - eth0</h1>
Options[eth0]: growright,bits,noinfo
#
Target[eth1]:`/etc/mrtg/scripts/ifmon.sh eth1`
Title[eth1]:"Trafego Clientes - eth1"
Maxbytes[eth1]:1400000
PageTop[eth1]:<h1>Trafego Clientes - eth1</h1>
Options[eth1]: growright,bits,noinfo
#
Target[loopback]:`/etc/mrtg/scripts/ifmon.sh lo`
Title[loopback]:"Trafego da Loopback - lo"
Maxbytes[loopback]:1400000
PageTop[loopback]:<h1>Trafego da Loopback - lo</h1>
Options[loopback]: growright,bits,noinfo
#
Target[192.168.1.100]:`/etc/mrtg/scripts/ifvmon.sh /var/log/ipfm/subnet/ipfm.log 192.168.1.100`
Title[192.168.1.100]:"Trafego do IP - 192.168.1.100"
Maxbytes[192.168.1.100]:1400000
PageTop[192.168.1.100]:<h1>Trafego do IP - 192.168.1.100</h1>
Options[192.168.1.100]: growright,bits,noinfo
Salvo se eu tenha esquecido de alguma coisa, o MRTG agora está pronto para funcionar, portanto vamos às finalizações:
Executando o IPFM
# ipfm -c /etc/ipfm.conf
Gerando a página que mostrará os gráficos
# indexmaker –output=/var/www/mrtg/index.html /etc/mrtg/mrtg.cfg
Executando o MRTG
# env LANG=C /usr/bin/mrtg /etc/mrtg/mrtg.cfg –logging /var/log/mrtg.log
Deixem suas dicas e sugestões nos comentários.
Eduardo Supertrix
Configurando rede no Ubuntu Desktop sem o NetworkManager
Se você está usando um desktop Ubuntu, pode ter se deparado com alguns problemas na hora de configurar programas de rede como Webmin e outros. O que acontece é que o NetworkManager; programa que cuida das configurações automáticas; é instalado e ativado na instalação padrão do Ubuntu Desktop.
Existe algumas maneiras de desabilitar este programa, mas acredito que a mais fácil é utilizar o programa rcconf:
# aptget install rcconf
# rcconf
Provavelmente o NetwordManager está na primeira posição da fila. Basta desabilita-lo e reiniciar a máquina. Em seguida, tudo que você vai precisar é configurar a rede na unha:
Edite o arquivo /etc/network/interfaces: (segue abaixo um exemplo)
# The loopback network interface
auto lo
iface lo inet loopback
#
# The primary network interface
auto eth0
iface eth0 inet dhcp
#
# The secondary network interface
auto eth1
iface eth1 inet static
address 192.168.1.1
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
Veja mais itens de configuração em Cibercity.biz
Backups automáticos mysql com shell script e crontab
Requerimentos:
- Um servidor que permita você logar via SSH.
- O servidor precisa permitir que você rode scripts shell scripts e tenha acesso ao mysql via linha de comando.
Definindo as variáveis:
#!/usr/bin/bash #Variables sr="localhost" #remote server lg="nome_do_usuario_do_mysql" #login name pw="senha" #password hs="all" #file name to store sql file bk="$HOME/dbackup" #path to store backup files nw=$(date "+%Y%m%d") #get date as string nb=60 #maximum number of files that will be keep
A primeira linha é o caminho do interpretador do shell script. Varia conforme a configuração do servidor. Este que aparece é para a Dreamhost.
Você vai precisar editar, colocando os seus valores nas seguintes variáveis:
- sr: nome do seu servidor, normalmente “localhost”, mas para a Dreamhost é sempre “mysql.dominio.com.br”
- lg: nome do seu usuário do servidor mysql
- pw: senha do seu usuário do servidor mysql
Se quiser, mude estas aqui com os seus valores:
- hs: nome do arquivo temporário mysql
- bk: nome do diretório onde ficarão armazenados as cópias do banco de dados. A variável $HOME deve ser mantida.
- nb: número de cópias do banco de dados. Como a Dreamhost me dá mais de 20 gigas de espaço em disco, e todos os meus bancos somados e compactados ficam em 10 Mb, eu armazeno 60 cópias, uma para cada dia de dois meses.
Agora, a funçao:
function backup() { echo "Getting data from mysql server" mysqldump -u$lg -p$pw -h$sr --add-drop-table --quote-names --all-databases --add-drop-database > "$HOME/$hs.sql" echo "Compressing $fn.sql.gz file ..." gzip -f "$HOME/"$fn.sql if [ -d $bk ]; then continue else mkdir $bk fi cp -f "$HOME/"$hs.sql.gz "$bk/$nw.sql.gz" a=0 b=$(ls -t $bk) c=$nb for arq in $b; do a=$(($a+1)) if [ "$a" -gt $c ]; then rm -f "$bk/$arq" fi done }
O comando mais importante aqui é o mysqldump. Com estes parâmetros, ele vai pegar todos os bancos de dados que estão no servidor definido na variável “sr”.
mysqldump -u$lg -p$pw -h$sr --add-drop-table --quote-names --all-databases --add-drop-database > "$HOME/$hs.sql"
O próximo comando compacta o arquivo sql gerado no diretório definido pela variável $HOME.
gzip -f "$HOME/"$fn.sql
O comando a seguir é quase cosmético. Ele cria o diretório para você automaticamente, caso ele não exista:
if [ -d $bk ]; then continue else mkdir $bk fi
Então, ele copia o arquivo gzipado para o diretório de backup, usando a data do sistema para gerar o nome, no formato AAAAMMDD.sql.gz. Ex: 20080603.sql.gz:
cp -f "$HOME/"$hs.sql.gz "$bk/$nw.sql.gz"
E como não queremos estourar o limite do nosso espaço no servidor, o trecho a seguir faz a limpeza, deletando o arquivo de backup número $nb + 1, isto é, o arquivo mais velho criado anteriormente e de número maior do que o que você definiu na variável nb, ou seja, o 61 neste caso.
a=0 b=$(ls -t $bk) c=$nb for arq in $b; do a=$(($a+1)) if [ "$a" -gt $c ]; then rm -f "$bk/$arq" fi done
E para terminar, coloque na ultima linha do script:
backup
Salve em um arquivo, exemplo backup.sh, em formato texto puro, em formato UNIX (LF). Um editor gratuito que faz isto é o PSPAD.
Agora acesse o shell do seu servidor e rode o crontab.
crontab -e
E coloque no final do arquivo a linha:
0 6 * * * sh /home/user/backup.sh
Onde “home/user” é o caminho até seu arquivo backup.sh. Esta linha diz para seu servidor fazer uma cópia todo dia as 06:00 h. Se estiver usando o Nano como editor, tecle CRTL+o para salvar o arquivo, depois CRTL+x para sair.
Para restaurar o banco, primeiro descompate-o, depois rode o mysq.
gunzip -f "$HOME/dbbackup/nome_do_arquivo.sql.gz" mysql -uusuario -psenha -hlocalhost < "$HOME/dbbackup/nome_do_arquivo.sql"
Importante: não coloque o script em um diretório que possa ser acessado pelo público, já que os dados de acesso ao banco estão nele.
Fonte: www.sgd.com.br
Dicas para compactar e descompactar arquivos
Este é um pequeno guia rápido para que você possa compactar, descompactar e visualizar arquivos no console do linux.
Introdução
GZIP e TAR são dois utilitários muito usados no Linux para a compactação de arquivos. Muitos dos programas e documentos disponíveis na Internet para Linux, se encontram nestes formatos. Este tutorial mostrará como usar os recursos básicos destas duas ferramentas. (mais…)
SSH sem senha com PuTTY
Este guia descreve como gerar e usar um par de chave private/public para acessar um servidor remoto com SSH utilizando o programa PuTTY. PuTTY é um cliente de SSH que está disponível para Windowsw e Linux (embora é mais comum para sistemas Windows). Usando logins baseados em chaves, você pode desabilitar o procedimento normal de login por username/senha, tornando o seu acesso mais seguro. (mais…)
Backup com RSYNC sem senha
Introdução
Pode parecer estranho o título do tutorial. E é estranho mesmo. Mas pior seria o verdadeiro título como “rsync utilizando SSH sem que você tenha que digitar a senha de acesso todas as vezes que rodar o script”. Como este título seria muito grande, resolvi abreviar e explicar ao longo do tutorial.
Todos nós temos a necessidade de fazer cópias de segurança (ou backup) de informações, sejam estas entre estações e um servidor, entre servidores ou até mesmo entre estações. O Linux* conta com várias ferramentas interessantes para estas tarefas, sendo uma delas o rsync, um pequeno aplicativo que permite a cópia de arquivos de uma máquina para outra de forma segura.
Não estarei aqui discutindo como usar o rsync mas sim como permitir que um script acesse um servidor ou outra máquina sem que o usuário tenha que digitar a senha de acesso, podendo assim agendar o script para que seja executado de tempos em tempos. (mais…)