Mostrando postagens com marcador ShellScripts. Mostrar todas as postagens
Mostrando postagens com marcador ShellScripts. Mostrar todas as postagens

30 janeiro 2009

Script para adicionar, Remover e alterar Usuários no SQUID

Caros amigos leitores,
Utilizo onde trabalho o SQUID como servidor proxy. E todos os usuários são autenticados. Como trata-se de órgão governamental, a troca de funcionários é constante. E o pessoal que trabalha comigo, tinham que ficar incluindo, alterando ou excluindo os funcionários que estavam iniciando suas atividades ou que estavam deixam elas.
Para quem utiliza o SQUID com autenticação NCSA_AUTH, precisa-se criar o usuário com htpasswd, adiciona-lo no departamento e reiniciar o squid.
Bom parei um pouquinho e pensei “Por que não criar um SCRIPT par tal tarefa?”. Sinceramente bastava um pouco de vontade…kekekkeke
O script tem as seguintes opções:
  1. Adicionar e Alterar Usuário
  2. Adicionar Usuário no Departamento
  3. Remover Usuário
  4. Listar Usuários
  5. Listar Departamentos
  6. Reiniciar SQUID
  7. Sair
[VER CODIGO]  [DOWNLOAD CODIGO]
Este material encontra-se publicado no VOL (Viva O Linux).
http://www.vivaolinux.com.br/dica/Criar-alterar-e-remover-usuarios-no-Squid/
Acredito que este script possa a vir ajudar muitos amigos Administradores, principalmente aqueles que tenham um volume muito grande para adicionar, alterar e remover usuários.
Observação: Vocês perceberam que eu coloco o nome do usuário por completo. Por que no relatório SARG, ele mostra apenas o ID do usuário (exemplo:jcarlos). E quando eu não consigo saber que é o ID no relatório, procuro no script pelo usuário, e com isto saberei o nome completo dele.
Não esqueçam de alterar os diretórios de acordo com o seu ambiente.
E como diria um professor e amigo Isidro UNIFIEO “PAU NO GATO”…
Espero que tenham gostado.

23 janeiro 2009

Script para verificar LOg do Squid e bloquear paginas selecionadas

Caros amigos leitores,
Uma das minhas maiores dificuldades, em relação a administração do proxy (SQUID), sempre foi ter que ficar analisando os relatórios de utilização de internet (SARG). Na maioria das vezes os meus relatórios tinha mais de 1.000 linhas de sites visitados. Imagine você verificando um por um. É de enlouquecer.
Lendo muitos posts e matérias sobre a utilização de alguns comando para coletar palavras em determinados arquivos. Resolvi da uma paradinha e escrever meu script. Vocês não tem noção como isso facilitou a minha vida.
Qual a função deste Script.
  1. Fazer um append das informações que deseja bloquear no arquivo pré-existente em seu SQUID.
Como funciona o Script.
  1. Este script tem a função de fazer uma varredura nos arquivos de log do SQUID (access.log, access.log.1…). Conforme escolhido pelo usuário.
  2. Coletar os sites com as palavras pré-estabelecidas.
  3. Incluir os sites no arquivo já existente e bloquea-los.
O que será necessário.
Bom programei este arquivo, visualizando o meu ambiente que é baseado no DEBIAN 4.0. Mas você pode altera-lo quando quiser. Setando os seus diretórios de preferencia.
Utilizei o editor de texto mcedit (Midnight Commander). Para voce implementar este pacote, segue a regra logo abaixo:
#apt-get update
#apt-get –y install mc
Mas caso deseje optar por qualquer outro edito, basta apenas voce trocar as linhas onde esta o mcedit pelo de sua preferencia.
Caso alguém vier a melhorar este script, gostaria que fosse compartilhado junto a este BLOG, pois muito mais pessoas irão usufruir deste beneficio.
[Ver o código] [Download Script]

Este material encontra-se publicado no VOL (Viva o Linux). http://www.vivaolinux.com.br/dica/Script-para-verificar-LOGs-do-Squid-e-selecionar-paginas-a-serem-bloqueadas/
Observação: A coleta dos sites são baseadas pelas palavras mencionadas em seu arquivo. Mas muitas vezes vai ocorrer de voce localizar paginas de conteudos licitos junto as palavras mencionadas. Exemplo: Palavra Sexo, retorna www.uol.com.br/sexo, mais com conteudos de saude publica. Ou seja, apos voce fazer esta varredura, visualize o arquivo. Para que voce não faça bloqueio indesejados.
Um abraço a todos…

10 novembro 2008

Backup com o utilitário pdumpfs

O backup de sistemas diretamente em discos rígidos, principalmente nesta época de tanta fartura em espaço de armazenamento, é uma alternativa cada vez mais atraente.

O utilitário pdumpfs, através do uso inteligente de hard links, permite que se mantenham backups com visões diárias. O comando

  # pdumpfs /home /backup/home


irá criar uma estrutura de diretórios do tipo



  2005/09/01/home
2005/09/02/home
2005/09/03/home
2005/09/04/home


Em 2005/09/01/home temos o backup inicial, com a cópia integral da partição home. Em 2005/09/02/home aparentemente temos o mesmo conteúdo, porém o que acontece na realidade é que foram criados hard links para os arquivos que não mudaram do dia 1 para o dia 2 de setembro. Diariamente são copiados para os diretórios respectivos ao dia apenas os arquivos que foram criados ou alterados. Para os demais arquivos são criados hard links. Desta forma, enquanto o espaço em disco permitir, podemos manter backups da imagem de diversos dias, meses, ou até mesmo anos.



Em um sistema que mantenho, eu faço o backup do sistema inteiro em uma partição e faço a cópia, via rsync, para uma máquina remota. Desta forma tenho um backup no próprio sistema, que me permite recuperar qualquer arquivo em questão de minutos e uma outra cópia de segurança armazenada remotamente. Note bem que o comando rsync deve levar em conta os hard links criados, caso contrário o comando interpretará cada uma das imagens diárias isoladamente, esgotando rapidamente o espaço em disco disponível no sistema remoto. Caso você não disponha de um sistema remoto para armazenar uma cópia extra dos backups, certifique-se de, ao menos, realizar o backup em um HD separado do HD onde se encontra o sistema original.



Para usar o rsync nesta situação, utilize a flag -H, para que os hardlinks sejam preservados durante a cópia dos arquivos:



  rsync -avz -e ssh -H /backup root@www.example.com:/backup


Com o comando acima, os arquivos serão transportados em forma compactada (flag -z), utilizando comunicação segura (ssh), preservando os hardlinks (flag -H).



O software pdumpfs foi escrito por Satoru Takabayashi e sua última versão sempre pode ser encontrada em http://namazu.org/~satoru/pdumpfs/



 



fonte: Rubens Queiroz de Almeida - http://www.dicas-l.com.br/

Backup com rsync

Em tempos de espaço em disco muito barato, o backup diretamente no disco rígido de uma outra máquina deixou de ser uma alternativa inviável.

Para isto nada melhor do que o insubstituível rsync (http://http://samba.anu.edu.au/rsync/).

O script é bem simples:

sync.sh

=======

#!/bin/bash

cd /backup

rsync -avzlH -e ssh --exclude '/tmp/*' \

--exclude '/proc/*' \

--exclude '/sys/*' \

--exclude '/dev/*' \

--exclude '/backup/*' \

--delete \

Este script faz o backup de todo o conteúdo do servidor (dados, aplicativos e configurações), em um diretório local chamado /backup.

As opções utilizadas são:

| **-a** | //archive//, o comando rsync é instruido a preservar quase tudo, com exceção dos //hard links// |

| **-H** | preservar os //hard links//. Se usarmos o ``pdumpfs`` para os backups, esta opção deve obrigatoriamente estar ativada, pois o comando ``pdumpfs`` trabalha por meio deste tipo de links |

| **-e ssh** | usar o comando ``ssh`` para estabelecer a comunicação com o computador remoto |

| **--delete** | apagar, do servidor que estiver recebendo os dados, as informações que não mais existirem no servidor remoto |

| **--exclude** | não copiar arquivos cujo nome coincida com o especificado |

Veja que alguns diretórios foram excluídos (/tmp, /proc, /sys, /dev, /backup) do backup. A opção --delete indica que arquivos que foram removidos do servidor original, devem ser também removidos da cópia local de backup.

É importante salientar que este script reflete a posição do dia do servidor remoto. Com este tipo de backup você não conseguirá recuperar a posição de um determinado dia. Uma ótima alternativa para se fazer backup em disco, mantendo a posição de diversos dias ou semanas, é o comando pdumpfs (http://namazu.org/~satoru/pdumpfs/), descrito em uma dica anterior (http://sixsideweb.blogspot.com/2008/10/backup-com-o-utilitrio-pdumpfs.html).

fonte: Rubens Queiroz de Almeida - http://www.dicas-l.com.br

 

14 outubro 2008

Backup com rsync

Em tempos de espaço em disco muito barato, o backup diretamente no disco rígido de uma outra máquina deixou de ser uma alternativa inviável.

Para isto nada melhor do que o insubstituível rsync (http://http://samba.anu.edu.au/rsync/).

O script é bem simples:

sync.sh

=======

#!/bin/bash

cd /backup

rsync -avzlH -e ssh --exclude '/tmp/*' \

--exclude '/proc/*' \

--exclude '/sys/*' \

--exclude '/dev/*' \

--exclude '/backup/*' \

--delete \

Este script faz o backup de todo o conteúdo do servidor (dados, aplicativos e configurações), em um diretório local chamado /backup.

As opções utilizadas são:

| **-a** | //archive//, o comando rsync é instruido a preservar quase tudo, com exceção dos //hard links// |

| **-H** | preservar os //hard links//. Se usarmos o ``pdumpfs`` para os backups, esta opção deve obrigatoriamente estar ativada, pois o comando ``pdumpfs`` trabalha por meio deste tipo de links |

| **-e ssh** | usar o comando ``ssh`` para estabelecer a comunicação com o computador remoto |

| **--delete** | apagar, do servidor que estiver recebendo os dados, as informações que não mais existirem no servidor remoto |

| **--exclude** | não copiar arquivos cujo nome coincida com o especificado |

Veja que alguns diretórios foram excluídos (/tmp, /proc, /sys, /dev, /backup) do backup. A opção --delete indica que arquivos que foram removidos do servidor original, devem ser também removidos da cópia local de backup.

É importante salientar que este script reflete a posição do dia do servidor remoto. Com este tipo de backup você não conseguirá recuperar a posição de um determinado dia. Uma ótima alternativa para se fazer backup em disco, mantendo a posição de diversos dias ou semanas, é o comando pdumpfs (http://namazu.org/~satoru/pdumpfs/), descrito em uma dica anterior (http://sixsideweb.blogspot.com/2008/10/backup-com-o-utilitrio-pdumpfs.html).

fonte: Rubens Queiroz de Almeida - http://www.dicas-l.com.br

Backup com o utilitário pdumpfs

O backup de sistemas diretamente em discos rígidos, principalmente nesta época de tanta fartura em espaço de armazenamento, é uma alternativa cada vez mais atraente.

O utilitário pdumpfs, através do uso inteligente de hard links, permite que se mantenham backups com visões diárias. O comando

  # pdumpfs /home /backup/home


irá criar uma estrutura de diretórios do tipo



  2005/09/01/home
2005/09/02/home
2005/09/03/home
2005/09/04/home


Em 2005/09/01/home temos o backup inicial, com a cópia integral da partição home. Em 2005/09/02/home aparentemente temos o mesmo conteúdo, porém o que acontece na realidade é que foram criados hard links para os arquivos que não mudaram do dia 1 para o dia 2 de setembro. Diariamente são copiados para os diretórios respectivos ao dia apenas os arquivos que foram criados ou alterados. Para os demais arquivos são criados hard links. Desta forma, enquanto o espaço em disco permitir, podemos manter backups da imagem de diversos dias, meses, ou até mesmo anos.



Em um sistema que mantenho, eu faço o backup do sistema inteiro em uma partição e faço a cópia, via rsync, para uma máquina remota. Desta forma tenho um backup no próprio sistema, que me permite recuperar qualquer arquivo em questão de minutos e uma outra cópia de segurança armazenada remotamente. Note bem que o comando rsync deve levar em conta os hard links criados, caso contrário o comando interpretará cada uma das imagens diárias isoladamente, esgotando rapidamente o espaço em disco disponível no sistema remoto. Caso você não disponha de um sistema remoto para armazenar uma cópia extra dos backups, certifique-se de, ao menos, realizar o backup em um HD separado do HD onde se encontra o sistema original.



Para usar o rsync nesta situação, utilize a flag -H, para que os hardlinks sejam preservados durante a cópia dos arquivos:



  rsync -avz -e ssh -H /backup root@www.example.com:/backup


Com o comando acima, os arquivos serão transportados em forma compactada (flag -z), utilizando comunicação segura (ssh), preservando os hardlinks (flag -H).



O software pdumpfs foi escrito por Satoru Takabayashi e sua última versão sempre pode ser encontrada em http://namazu.org/~satoru/pdumpfs/





fonte: Rubens Queiroz de Almeida - http://www.dicas-l.com.br/

04 setembro 2008

ShellScripts - Geração automatica de senhas

De tempos em tempos administradores de sistemas precisam criar um grande número de contas. Criá-las manualmente, além de ineficiente e propenso a erros, pode demorar uma eternidade. Imagine o caso de universidades ou escolas que recebem centenas ou mesmo milhares de novos alunos a cada semestre.

Sistemas Linux possui um utilitário feito sob medida para esta situação chamado mkpasswd.

O comando mkpasswd, quando invocado sem argumentos, retorna uma senha:

# mkpasswd
9nn7sJJvj


Uma shell script simples para criar quantas contas forem necessárias e que atribui a cada usuário uma senha pode ser criada facilmente. Para efeito de nosso exemplo considere que a lista dos usuários a ser criados encontra-se no arquivo novos-usuarios.txt.



#!/bin/bash
for usuario in `cat novos-usuarios.txt`
do
useradd $usuario
mkpasswd $usuario > $usuario.senha
# Criação da carta ao usuário, contendo
# sua senha, normas de uso e recomenda-
# ções gerais
cat > $usuario.carta << EOF
Prezado Usuário(a),

Conforme sua solicitação, foi criada uma conta em nossos computadores
centrais com as seguintes especificações:

computador: computador.dominio.com.br
identificação: $usuario
senha: `echo $usuario.senha`

Solicitamos a memorização das informações contidas neste documento e sua
destruição em seguida devido ao caráter confidencial destas informações.

Realize a troca de sua senha já em seu primeiro acesso para algo que
lhe seja mais fácil de lembrar.

Lembre-se, nunca divulgue a sua senha de acesso para ninguém. A
segurança de seus dados e do sistema como um todo dependem de você.

Para maiores informações consulte o endereço
http://www.dominio.com.br/suporte ou envie uma mensagem para
suporte@dominio.com.br

Atenciosamente, Suporte Técnico - Centro de Computação

EOF
lpr $usuario.carta
rm $usuario.*
done


O processo acima cria a conta do novo usuário, atribui-lhe uma senha inicial de acesso e imprime, na impressora padrão do sistema, uma carta a ser entregue ao novo usuário.



Os comandos useradd e mkpasswd aceitam diversas opções, que podem ser usadas para especificar com mais precisão o ambiente do usuário. Para simplicidade de entendimento, os comandos empregados na shell script acima utilizaram os valores padrão. Após o processamento todos os arquivos temporários são removidos.



Problemas acontecem. Recomendamos sempre que se gere um backup dos arquivos envolvidos /etc/passwd, /etc/shadow e /etc/group) antes da execução deste script.



Outra recomendação importante é que todas as senhas criadas por este método sejam expiradas, requerendo do usuário a sua troca quando do primeiro login.





fonte: Dicas - http://www.dicas-l.com.br

Shellscripts - usando cores e formatação em shell Scripts

Já se deparou com a necessidade (ou vontade) de destacar texto ou simplesmente fazer o output do seu script tornar-se visualmente chamativo ?

Normalmente programadores (especialmente em shell script) não adotam isso por gostarem do texto puro, da linha de comando. Telinha preta :)

Todavia, se você é daqueles que acredita que seus scripts podem ficar melhores com alguma "cosmética", acredite, eles ficam mesmo. Pelo menos visualmente.

Inserir cores e diferenciar texto pode ser interessante quando você quiser destacar um erro, evidenciar diferenças ou, simplesmente, chamar à atenção para algo importante.

Sendo assim, aqui vai uma dica para inserir cores em um script (ou texto):

Essa dica foi testada em vi e funciona legal em terminais que suportam o formato ANSI. Basta que você adicione uma certa sequência ao comando echo para alcançar seu objetivo.

A sintaxe genérica é:

  echo "^[[#m<texto>"


Onde: ^[ é um caracter especial produzido pressionando Crtl-v e, em seguida, Esc;



O hash (#) é substituído por um número, dependendo do tipo de efeito que voce pretende adicionar ao seu texto;



O segundo [ e a letra m são caracteres normais;



Sendo assim, a sequencia



  echo "^[[33mTestando apenas^[[0m"


ira mostrar o texto Testando apenas em amarelo



Enquanto a sequencia:



  echo "^[[31m^[[1mTestando apenas^[[0m"


ira mostrar o texto Testando apenas em vermelho e negrito (um vermelho um pouco mais forte)



Para imprimir o resultado de uma variável, basta definí-la corretamente e não permitir que o comando echo a interprete. Assim, segue um exemplo de como imprimir a variável TESTE com fundo azul, texto vermelho, negrito e sublinhado:



  TESTE="Testing Only"
echo "^[[4m^[[1m^[[44m^[[31m${TESTE}^[[0m"


Neste exemplo, alem de formatar o texto, também delimitei o início e fim do nome da variável com {} - isso para evitar qualquer erro de interpretação pelo echo e pelos caracteres especiais.



Note que eu sempre termino com a sequencia ^[[0m. Esse é o código passado ao echo que irá retornar seu cursor ao estado "normal", ou seja, como estava previamente (sem cores).



Abaixo anexo uma pequena tabela C de várias cores e formatos. Existem mais códigos, mas esse são os que eu mais utilizo. Sugiro que, se houver tempo e disposição, você descubra as outras combinações e possibilidades... ;)





Tabela de códigos:





CORES DE TEXTO



PRETO 30



VERMELHO 31



VERDE 32



AMARELO 33



AZUL 34



MAGENTA 35



CIANO 36



BRANCO 37



CORES DE FUNDO



PRETO 40



VERMELHO 41



VERDE 42



AMARELO 43



AZUL 44



MAGENTA 45



CIANO 46



BRANCO 47



MODOS ANSI



NORMAL 0



NEGRITO 1



BAIXA INTENSIDADE 2



ITALICO 3



SUBLINHADO 4



PISCANDO 5



PISCA RAPIDO 6



INVERSO 7



INVISIVEL 8





Note que alguns comandos nativos do Unix, como cat e pg, por exemplo, já mostram o resultado formatado, ou seja, colorido. Outros comandos, como more irão mostrar o código completo. O interessante, aqui, é notar que no último exemplo (com variável), o cat naquele script exibira:



  TESTE="Testing Only"
echo "${TESTE}"


Onde o texto ${TESTE} já será mostrado colorido.



Mas note também que um simples (e famoso) Crtl-c dessa sequência, seguido de Ctrl-v no vi não irá funcionar. Isso porque os caracteres ^[ são especiais e não um texto puro. Assim, é necessário que eles sejam "passados" para o vi como tal... copiar o arquivo, ou fazer um cat dele direcionar a saida para outro arquivo, no entanto, funcionam perfeitamente.





FONTE: Cantinho do Shell - http://www.dicas-l.com.br/cantinhodoshell

18 agosto 2008

Brute-Force - SCRIPT para bloquear ataques de brute-force

Caros Leitores,

É comum hoje em dia, acharmos em nossos logs, várias tentativas de ataques de em um servidor SSH. As ferramentas e dicionários utilizados estão cada vez mais aprimorados. A idéia deste tutorial á fornecer um passo de como implementar um script que verifica uma tentativa de ataque brute force de SSH e imediatamente bloquei o host de origem que estava tentando fazer o ataque.

Neste script estou me baseado na distribuição SlackWare 11.0. Mas poderar ser usado em qualquer distribuição, mas será necessário a alteração do endereço do arquivo onde esta gravado o LOG com os referidos ataques.

O ideal para companhamento um pouco mais eficaz, você implementar o LOGCHECK - http://logcheck.org/. Esta ferramenta tem a função de enviar via e-mail as ultimas alterações feitas no LOG, de acordo com as datas e horários estipuladas pelo usuário.

Vou postar o script e detalharei os seus passo.

#!/bin/sh
# Desenvolvido por José Carlos Oliveira
# Testado no slackware 9, 10, 11.
#
####

##Variáveis para gravação de arquivos

tempip="/usr/local/scripts/bruteips/bloqueia-ips-`date +%d%m%Y`.tmp";
blockip="/usr/local/scripts/bruteips/bloqueia-ips-`date +%d%m%Y`";
script="/usr/local/scripts/bruteips/boqueia-`date +%d%m%Y`";

# separa todos os ips que tentaram bruteforce utilizando os usuarios guest/test/admin/user
#echo -n "Digite o nome do LOG (exemplo: messages): "
#read

cat -n /var/log/messages | grep -P "(guest|test|admin|user)" | grep -i sshd | awk -F" " '{ print $11}' > $tempip;

# faz backup da lista de ips bloqueados
if [ -f $blockip ]; then
cat $blockip >> $tempip;
fi

# remove ips duplicados
sort -u $tempip | grep -v ^$ | grep -v user > $blockip;

# gera um script que bloqueia o ip através do iptables
ips=$(cat $blockip);

#echo "iptables -F INPUT" > $script;
for ip in $ips ; do
blocked=("iptables -A INPUT -s $ip -j DROP")
echo $blocked >> $script
done


#Torna o script executável

chmod +x $script

#Executa Script
$script

#Apaga os arquivos temporários
rm $tempip

Simples, não.... Basta apenas coloca-lo no CRON <Clique aqui para ver sobre o comando CRON> para ser executado no momento em que desejar. Eu particularmente, executo ele de 4 em 4 horas. A invasão não tem hora marcada para acontecer. rs*

Além do script acima, é fundamental um sistema bem configurado. Uma configuração com números máximo de tentativas, por exemplo. Ou seja, configure seu servidor para bloquear contas depois do terceiro login sem sucesso.

Este script pode sofrer melhorias. Coloque a ideia em pratica e compartilhe, para que possamos aperfeiçoa-lo. Conto com vocês...

Em um próximo post estarei falando sobre um programinha de brute force. Caso você tenha interesse em saber um pouco mais, acesse www.cygwin.com ou www.thc.org/thc-hydra.

Até o próximo post....Abraços

13 agosto 2008

Shell scripts não convencionais

Na primeira linha de uma shell, geralmente encontramos algo do tipo:

  #!/bin/bash


ou



  #!/bin/csh


O que poucos sabem, é que podemos criar shells diretamente com outros comandos do Unix.



Por exemplo, eu frequentemente preciso saber o meu endereço de trabalho, mas nunca me lembro onde coloquei o cartão com todos os dados. Este problema pode ser facilmente resolvido com uma shell como abaixo:



  #! /bin/more
Rubens Queiroz de Almeida
Cidade Universitária Zeferino Vaz
Centro de Computação
Unicamp
13.083-970 - Campinas - São Paulo


Este é um script que ecoa para a tela o seu conteúdo. Ao executá-lo temos:



  #! /bin/more
Rubens Queiroz de Almeida
Cidade Universitária Zeferino Vaz
Centro de Computação
Unicamp
13.083-970 - Campinas - São Paulo


Bom, apareceu também a primeira linha, que é uma informação que não preciso. Para resolver isto, basta fornecer ao comando more, o argumento +2, instruindo o comando a iniciar seu trabalho a partir da linha 2. O script fica então assim:



  #! /bin/more +2
Rubens Queiroz de Almeida
Cidade Universitária Zeferino Vaz
Centro de Computação
Unicamp
13.083-970 - Campinas - São Paulo


Desta forma a linha inicial não é mais exibida.



Da mesma forma, se eu substituir a primeira linha por



  #! /bin/ls -l


Teremos uma shell que executa o comando **ls -l* sobre ele mesmo, como abaixo:



  $ ./endereço
-rwxr-xr-x 1 queiroz queiroz 137 Jul 12 18:40 ./endereço


Parece meio inútil, mas certamente deve haver algum uso inteligente para esta facilidade ....

Speedy - Script de autenticação automática Speedy Negócios

Procurei e testei inumeros scripts, porém quase todos continham erros ou incorreções para efetuar a autenticação no Speedy Negócios.

Refiz o script e inclui um log para manter um histórico das conexões.

Salve este script com o nome que desejar, dê permissões para execução do mesmo chmod 755 < nome_do_script> e coloque o mesmo para executar a cada

15 minutos no cron

Altere as variáveis para o seu caso, funciona muito bem no Debian etch.

#!/bin/bash

###########################################

# Script de autenticação speedy negócios

# ver. 1.0

# data 28/04/2008

###########################################

### VARIAVEIS ###

SPEEDYZONEIP="200.171.222.97"

#SPEEDYZONEIP="200.171.222.93"

LOGIN=internet # coloque o seu login

DOMINIO=speedy.com.br # coloque o seu domínio de autenticação

SENHA=internet # coloque sua senha

SPEEDYZONE="http://${SPEEDYZONEIP}/wsc/servlet/logon.do";

URL=registro.br # use uma url sem java e com alta disponibilidade

ARQTEMP=/etc/firewall/temp.txt # coloque o path completo do arquivo temporário

ARQLOG=/etc/firewall/report_auth.log # coloque o path completo do arquivo de log

### FUNÇOES ###

###########################################

# Função para redução do arquivo de log,

# mantêm o arquivo de log com um tamanho

# aceitável

###########################################

corrigeLOG() {

# remove o arquivo temporario de transferência

rm -f $ARQTEMP

if [ -e $ARQLOG ];then

# se o arquivo de log existe, verificar quantas linhas existem no arquivo

LINHAS=`cat $ARQLOG | wc -l`

if [ $LINHAS -gt "2700" ];then

# copiar 2000 linhas de trás pra frente e salvar em um arquivo temporário

# e enviar os textos do console para null

tail -n 2000 $ARQLOG > $ARQTEMP 2> /dev/null

# apagar arquivo de log

rm -f $ARQLOG

# renomear o arquivo temporario como arquivo de log

mv -f $ARQTEMP $ARQLOG

fi

fi

}

###########################################

# Função de autenticação

# cuidado com esta função qq erro imperirá

# a autenticação.

# NOTA : A telefonica custuma mudar os

# endereços e rotinas com alguma frequencia

# já houveram pelo menos 3 alterações desde

# 2002 nesta rotina.

# Caso o sistema não autentique verifique

# pelo browser gráfico os endereços e variáveis

# corretas e altere o script para se adequar

# as novas rotinas.

###########################################

speedy_auth() {

# este comando abaixo é a rotina de autenticação do speedy

lynx -dump

$SPEEDYZONE\?opcion=internet\&CPURL=http\%3A\%2F\%2F${URL}\%2F\&username=${L

OGIN}\%40${DOMINIO}\&password=${SENHA}|grep -i "salvar" >/dev/null

if [ "$?" = "0" ];then

echo "Erro de autenticação de Speedy! `date +"%T de %d/%m/%Y"`" >> $ARQLOG

exit 1

fi

echo "Conexão Ok !! `date +"%T de %d/%m/%Y"`" >> $ARQLOG

}

###########################################

# Função de teste do navegador

# verifica se o lynx está instalado

# se não estiver apt-get install lynx

###########################################

testaNav() {

# testa a presença do nevegador lynx

if ! [ -f "/usr/bin/lynx" ] ; then

# nevegador não intalado o script não funcionará

# portanto sair do script

exit 0;

fi

}

### PRINCIPAL ###

# Verifica se o computador de destino esta pedindo autenticacao

main() {

# verifica se o navegador esta disponivel lynx

testaNav

# reduz, se necessário, o tamanho do log

corrigeLOG

# testa a conexão

ping -c 1 $URL &>/dev/null

# se retornar qq coisa diferente de zero

if [ "$?" != "0" ];then

# conexão não respondeu, então verificar se é a pagina do speedyzone

lynx -dump "$URL" | grep -iEq "speedyzone"

# se a palavra speedyzone foi encontrada então estamos na pagina de login do speedy negocios

if [ "$?" = "0" ];then

# autorizar a conexão

speedy_auth

fi

else

# houve resposta positiva do ping então estamos conectados

echo "Conectado !!! `date +"%T de %d/%m/%Y"`" >> $ARQLOG

exit 1

fi

}

# Chamada da rotina principal

main

exit 0;

Fonte: Roberto L. Machado - http://www.Dicas-L.com.br/

23 julho 2008

script de backup para linux

Caros amigos,

Conforme meu ultimo post sobre FERRAMENTINHA importante para Backup no LINUX, estarei disponibilizando neste post eu SCRIPT baseado no ShellScript. Eu o utilizo para fazer backup do Linux para um servidor Windows 2003 Server onde encontra-se minha fita DAT. Nele adaptei algumas funções de controle, tais como:

  • Compactar os diretórios a serem backupeados com o nome do backup seguido da data.
  • Gravação de um log com o status do processo.
  • Uma forma de gerenciar a quantidade de arquivos de backup contidas no diretório, como; limpar o diretório com os backups maiores do que 30 dias.
  • Gravação dos dados utilizando os comandos RSYNC, MOUNT, FIND e TAR para gravação no Sistema operacional Windows 2003 Server.

Estarei colocando abaixo, o SCRIPT por completo e detalhando cada linha dele;

#!/bin/sh (o tipo de bash que sera utilizado o script)


#Syncroniza dados (linha de comentario)

RSYNC() { [ $? == 0 ] && echo "`date +%x^%X` - Sincronismo $1 executado com sucesso!" >> /var/log/backup.log || echo "`date +%x^%X` - Sincronismo $1 executado} (Vamos iniciar um funçãozinha para a gravação do LOG do processo de backup)


mount -t smbfs -o username=xxx,password=xxx //servidor/bkplinux /mnt/bkpdados (Neste caso estou montando um volume no Servidor Windows 2003 Server, onde encontra-se uma pasta compartilha chamada Bkplinux. Isso não é nada diferente que voce utilizar um compartilhamento de pasta pelo Windows)

MOUNT='mount | grep /mnt/bkpdados' (Pergunto aqui para o Linux, existe o compartilhamento)

if [ -z "$MOUNT" ]; then (Vamos iniciar o laço. Neste inicio estou perguntando se o volume que montei acima esta ok. Caso positivo, continuaremos o processo abaixo. em caso de negativo, para o processo por aqui.)

exit 1 (Sai do processo caso o volume não foi montado)

else (Se estiver tudo correto então faça isso abaixo)


tar cfz - /usr/local/squid/etc/* > /home/backup/bkpsquid-`date +%d-%m-%y`.tar.bz2 (Vamos compactar todos os arquivo contidos /usr/local/squid/etc e gravar o arquivo /home/backup/bkpsquid-01-01-2008.tar.bz2)

find /home/backup/. -daystart ! -mtime -30 -exec rm -f {} \; (Procuro tudo que esta contido no diretorio backup com mais de 30 dias de arquivamento e apagado caso isso ocorra)

rsync -Cavz /home/backup/* /mnt/bkpdados/serv001 (Com este comando vamos sincronizar as informações contidas no LINUX para o WINDOWS 2003 SERVER. As opções uitlizadas no RSYNC -Cavz, peço para ele sincronizar tudo que esta no diretório, caso este arquivos ja existam, sincronize apenas os que teverem sidos alterados ou novos)

umount /mnt/bkpdados (Desmonte o volume da pasta compartilhada)

RSYNC "RSYNC" (Aqui estou pedindo para ele gravar no log, se tudo ocorreu com sucesso ou não)

fi (finaliza o laço)

<Clique Aqui para fazer download do Script>

Que for utilizar este script, após o download será necessário algumas regrinhas para o bom funcionamento dele.

  1. Após fazer download, coloque ele na pasta que melhor lhe atender:
  2. Torne o arquivo executavel. #chmod 0775 /<pasta escolhida>/bkpgeral.sh
  3. Adicione no CROND <Clique aqui e veja o post sobre CROND> para ser executado no momento que lhe convir.
  4. Verifique os Logs para saber como foi a gerção dos arquivos.

Até o próximo post....