shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Lista para ISA Server a partir de blacklista de squid


From: William Marques
Subject: Re: [shell-script] Lista para ISA Server a partir de blacklista de squid
Date: Fri, 09 Sep 2005 19:01:16 -0300
User-agent: Mozilla Thunderbird 1.0.6 (X11/20050716)

William Marques escreveu:

White_Tiger escreveu:

As listas que eu tenho começam com "." ou "/" ou direto. O squid pega na boa mas no ISA não. Então tem que fazer um if verificando se o primeiro caracter da linha do arquivo squid contem . ou / . Caso haja, remova-o e continua o resto do script.
Alguma idéia pra resolver isso?

On 9/9/05, William Marques <address@hidden> wrote:


White_Tiger escreveu:

Pessoal. Estou querendo bloquear sites a partir de um gateway contendo
ISA
Server by $Microsoft.

Eu sei. Queria filtrar com linux e squid mas o dono da empresa quer
server
2000 com ISA. Então caímos no problema. Eu tenho várias listas para squid que queria esportar par o ISA. Detalhe: o ISA só aceita xml. Ai me surgiu
a
idéia de fazer um script para pegar o arquivo do squid .txt e formata-lo para xml mas sou péssimo com script. Será que tem como me ajudarem?

A lista do squid eh uma lista normal

.sex.com
.playboy.com
.orkut.com

e a do ISA tem esse formato:

<Destination Type="*0*"
DomainName="*ad.preferences.com <http://ad.preferences.com><
http://ad.preferences.com>
*" Path="*/**" /> <Destination Type="*0*" DomainName="*ads.msn.com <http://ads.msn.com> <
http://ads.msn.com>*"Path
="*/**" /> <Destination Type="*0*"
DomainName="*ad.linkexchange.com <http://ad.linkexchange.com><
http://ad.linkexchange.com>
*" Path="*/**" />


Se alguem puder me ajduar eu agradeço.


[As partes desta mensagem que não continham texto foram removidas]



---------------------------------------------------------------------
Esta lista não admite a abordagem de outras liguagens de programação,
como perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio aviso.
---------------------------------------------------------------------
Sair da lista: address@hidden
---------------------------------------------------------------------
Esta lista é moderada de acordo com o previsto em
http://www.listas-discussao.cjb.net
---------------------------------------------------------------------

Links do Yahoo! Grupos









Saudações a todos,

é meu primeiro pitaco nessa lista espero que de muitos.

Bom, de sopetão assim, me parece que temos apenas dois campos que são alteráveis, porém no ISA sempre existe a opção do site inteiro, pelo que pude notar. Depois vem a expressão regular do ISA server:

<Destination Type="*0*" <- Sempre igual
DomainName= <-sempre igual "*ad.preferences.com <http://ad.preferences.com> <
http://ad.preferences.com>*" < aqui é variável
Path="*/**"/> <- sempre igual
Entao o que temos que construir é a linha 3 do meu exemplo, baseando em cada linha da blacklist do squid. Como estou estudando para tira minha certificação LPIC1, resolvi criar esse script para ajudar a você e a mim:


#!/bin/bash
# Converte listas do squid para o ISA Server
# Por William Marques - 09-09-2005
# address@hidden
#
# Variaveis:
DT='<Destination Type="*0*"'
DN='DomainName='
PT='Path="*/**"/>'
CD=`pwd`
cd $CD
# Vamos iniciar:
for i in `cat squid.txt`
do
VAR1="*${i}"
VAR2="<http://${i}>*"
LINHA=""${DT}" "${DN}""${VAR1}" "${VAR2}" "${PT}""
echo ${LINHA} >> isa.xml
done
exit 0
# EOF

Para funcionar, obviamente, terá que existir a lista squid.txt no diretório aonde você irá executar o script.

Só não sei se terá problemas com url iniciadas por pontos, não sei como o ISA server funciona. Se ele não aceitar, de repente teremos que criar um expressão regular que remova o ponto do início das urls, sei lá, alterar para algum metacaracter que ele aceite, ou algo do gênero.

Testa aí e me diz o que aconteceu.

Abraços,

William Marques

--
William Henrique Siqueira Marques
address@hidden







_______________________________________________________ Yahoo! Messenger com voz: PROMOÇÃO VOCÊ PODE LEVAR UMA VIAGEM NA CONVERSA. Participe! www.yahoo.com.br/messenger/promocao<http://www.yahoo.com.br/messenger/promocao>

---------------------------------------------------------------------
Esta lista não admite a abordagem de outras liguagens de programação, como perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio aviso.
---------------------------------------------------------------------
Sair da lista: address@hidden
---------------------------------------------------------------------
Esta lista é moderada de acordo com o previsto em http://www.listas-discussao.cjb.net
---------------------------------------------------------------------



*Yahoo! Grupos, um serviço oferecido por:*  PUBLICIDADE
<http://br.rd.yahoo.com/SIG=12fi73gi9/M=365837.7000707.7924794.2369893/D=brclubs/S=2137111254:HM/Y=BR/EXP=1126294034/A=2950750/R=2/id=noscript/SIG=10tift5qr/*http://br.movies.yahoo.com/> ------------------------------
*Links do Yahoo! Grupos*

 - Para visitar o site do seu grupo na web, acesse:
 http://br.groups.yahoo.com/group/shell-script/
 - Para sair deste grupo, envie um e-mail para:
 address@hidden<address@hidden?subject=Unsubscribe>
- O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço do Yahoo! <http://br.yahoo.com/info/utos.html>.

[As partes desta mensagem que não continham texto foram removidas]



---------------------------------------------------------------------
Esta lista não admite a abordagem de outras liguagens de programação, como 
perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio 
aviso.
---------------------------------------------------------------------
Sair da lista: address@hidden
---------------------------------------------------------------------
Esta lista é moderada de acordo com o previsto em 
http://www.listas-discussao.cjb.net
---------------------------------------------------------------------

Links do Yahoo! Grupos










Uhm...
Talvez seja mais fácil tratar o seu arquivo do squid no vi, removendo todas as referencias de . e / no inicio dele, porque é variável o primeiro caracter Tentei fazer aqui direto no bash, mas parece que somente a partir da versao 3.0 é que vou conseguir fazer o que queria, alguem pode me dar mais dicas? A intençao original era fazer uma regex no if:

if [[ $i =~ '^[./]' ]] then;
ou seja, se a string começar com "." ou "/" ....
Daí recebo esses erros:
./squid-to-ISA.sh
./squid-to-ISA.sh: line 12: conditional binary operator expected
./squid-to-ISA.sh: line 12: syntax error near `=~'
./squid-to-ISA.sh: line 12: `  if [[ "${i}" =~ '^[./]' ]]'
E fazendo assim:
if [[ $i = [./] ]] then;


Mas isso nao funcionou de forma alguma meu bash está na versão 2.05.
Aguardo sugestoes...

Bom, mas vamos ao nosso amigo vi:

Isso vai te pedir confirmação, um a um, no vi, pela substituição:
:%s/^[./]//c
E isso vai alterar de uma só bocada o arquivo inteiro:
:%s/^[./]//g

Daí o script deve  funfar.
Outra opção de repente é usando grep dentro do script, montando 3 listas separadas, e tratar as strings com sed. Mas vai dar mais trabalho.

Abraços,
william

CARA!
Não resisti e acabei criando um scriptzinho aqui pra vc.
Obrigado por me ajudar a estudar, estava enferrujado! 8-)
Testa aí, por favor:

#!/bin/bash
# Converte listas do squid para o ISA Server
#
# Variaveis:
# No final sera criado um arquivo nome-arq-ori-squid.xml
# que deve servir para o ISA server.
# Aceito sugestoes! address@hidden

DT='<Destination Type="*0*"'
DN='DomainName='
PT='Path="*/**"/>'
CD=`pwd`
cd $CD
if [ $# -ne 1 ]
then
echo "Uso: `basename squid2ISA.sh` arquivo-do-squid"
exit 0

fi

for i in `cat $1`
do
    #grep -v $i > dominios.tmp
    # Remove algum lixo:
    rm -f ponto-barra.tmp
    echo ${i} |  grep '^[./]' > ponto-barra.tmp
    # Se tiver arquivo com conteudo:
    if [ -s ponto-barra.tmp ]
    then
    # trata as strings:
    sed -e s/^[./]//g ponto-barra.tmp > ponto-barra.swp
    # Escreve a linha e insere no nosso arquivo:
    j=`cat ponto-barra.swp`
    VAR1="*${j}"
    VAR2="<http://${j}>*"
    LINHA=""${DT}" "${DN}""${VAR1}" "${VAR2}" "${PT}""
    echo ${LINHA} >> $1.xml
    # remove o arquivo para o proximo laço:
    rm -f ponto-barra.tmp
    # Caso contrario, ja esta tratada, basta inserir no arquivo:
    else
    VAR1="*${i}"
    VAR2="<http://${i}>*"
    LINHA=""${DT}" "${DN}""${VAR1}" "${VAR2}" "${PT}""
    echo ${LINHA} >> $1.xml
    fi
done
# Remove arquivos utilizados:
rm -f ponto-barra.tmp ponto-barra.swp
# sai da forma correta:
exit 0
# EOF

Abraços,

--
William Henrique Siqueira Marques
address@hidden



        

        
                
_______________________________________________________ Yahoo! Messenger com voz: PROMOÇÃO VOCÊ PODE LEVAR UMA VIAGEM NA CONVERSA. Participe! www.yahoo.com.br/messenger/promocao


reply via email to

[Prev in Thread] Current Thread [Next in Thread]