Linux slogan
Visite também: Segurança Linux · BR-Linux.org · Dicas-L · Doode · NoticiasLinux · SoftwareLivre.org · UnderLinux



» Screenshot
Linux: TUDO AZUL....
Por ZIPPO
» Login
Login:
Senha:

Se você ainda não possui uma conta, clique aqui.

Esqueci minha senha



Scripts

Linux user

Publicado por Marcos Paulo Ferreira em (última atualização em 09/10/2010)   [ 2289 hits ]

Login: Daemonio, 101171 pontos

Homepage: http://daemoniolabs.wordpress.com   


Descrição

Para quem lia ou lê a phrack magazine já deve ter usado o programa extract lançado na revista
na edição #50 [1]. Esse programa é de grande utilidade, pois com ele podemos extrair conteúdos específicos
de um arquivo texto e salvá-los em um arquivo qualquer.

O conteúdo mencionado deve estar entre as tags <++> e <-->. O nome do arquivo de saída deve estar
após a tag <++> (obs: Pode-se utilizar diretórios também. Se eles não existirem, então serão criados.)

Confira um exemplo:

$ cat arquivo.txt
aaaaa
bbbbb
<++> saida.txt
1111
2222
3333
<-->
cccc
dddd

Utilizando o script:

$ ./extract.sh arquivo.txt
- Extracting saida.txt

Depois disso, o arquivo saida.txt será criado e seu conteúdo será:

$ cat saida.txt
111
222
333

[1] http://www.phrack.com/issues.html?issue=50&id=16

Espero que gostem.
t+

[ Download: extract.sh ]   [ Enviar nova versão ]

Versões atualizadas deste script (NOVO)
Linux user

Publicado por Marcos Paulo Ferreira em 03/10/2010

Changelog: É... parece que a regex para casar com as tags de abertura e fechamento não estava funcionando.
Não sei por quê, mas aqui em casa o script rodou sem problemas.

Bem, troquei a tag '<[+][+]>' para \<[+][+]\>, pois as versões recentes do bash não precisam das aspas para delimitar a regexp (e se você usar as aspas, o resultado será diferente :S ).

Outra coisa que mudei foi a robustez do script. Agora ele verifica alguns errinhos básicos que o script anterior não verificava.

Opa... fuçando pela net encontrei o Meleu Extracting Utility que faz a mesma coisa que esse script aqui.
Para falar a verdade, eu nem peguei o código do meleu para ler a fundo, mas posso garantir que o script tá bem diferente do meu e com muito mais esquemas interessantes :|

Página pessoal do meleu:
http://www.meleuzord.hpg.ig.com.br

Bem, acho que é isso!
t+

(versão 2)

 

[ Esconder código-fonte ]

#!/bin/bash
#
# Autor: Marcos Paulo Ferreira (Daemonio)
# Contato: undefinido at gmail com
#
# =[ Script : extract.sh ]=
# Dom Ago 22 13:43:09 BRT 2010 Inicio
# Seg Ago 23 00:34:38 BRT 2010 Fim da primeira versao
# Seg Ago 23 14:21:32 BRT 2010 Inclusao do read -r no while
#
# =[ Descricao ]=
# Extrai o conteudo delimitado entre as tags <++> e <-->
# de um arquivo texto. O nome do arquivo a ser salvo
# deve vir depois da tag <++>.
# Esse script foi baseado no extract.c da phrack #50.
#
# =[ Uso ]=
# $ ./extract.sh arquivo.txt
#
# =[ Exemplo ]=
# $ cat arquivo.txt
#   <++> saida.txt
#   111
#   222
#   333
#   <-->
# $ ./extract.sh arquivo.txt
#   - Extracting saida.txt
# $ cat saida.txt
#   111
#   222
#   333
#

extract() {
    while read -r LINE
    do
        # Procura pelo padrao <++> no inicio da linha
        if [[ $LINE =~ '^<[+][+]>' ]]
        then
            # Extrai o nome do arquivo ( tudo apos o <++> )
            FILENAME=${LINE#* }

            # Precisa criar diretorios?
            if [[ $FILENAME =~ '/' ]]
            then
                DIRNAME=${FILENAME%/*}
                mkdir -p $DIRNAME
            fi

            # Se arquivo existe, entao o deleta.
            [ -e "$FILENAME" ] && rm -f "$FILENAME" 2> /dev/null

            # Confere se e' possivel criar arquivo
            if ! touch $FILENAME 2> /dev/null
            then
                echo "Could not extract $FILENAME"
                exit 1
            fi

            echo "- Extracting $FILENAME"

        # Gravar no arquivo ate encontrar <-->
        else if ! [[ $LINE =~ '^<-->' ]]
        then
            echo -E "$LINE" >> $FILENAME
        fi
    fi
done
}

[ -z "$1" ] && echo "Usage: $0 <inputfile>" && exit 1

sed -n '/^<++>/,/^<-->/p' "$1" | extract

Scripts recomendados
   Script Linux recomendado Screenshot script
   Script Linux recomendado Atualização do AVG
   Script Linux recomendado Backup em HD Externa com Rsync
   Script Linux recomendado xadsl-setup
   Script Linux recomendado Barra de progresso

Comentários
[1] Comentário enviado por Daemonio em 07/10/2010 - 08:06h:

Caramba, o script não está funcionando. :/
A regex '<[+][+]>' não está casando com a linha por causa das aspas.
Estranho que em meu computador funcionou certinho.
(Deve ser porque eu estava usando o zsh enquanto programava em bash, sei lá.)

Bem, já enviei a correção e acrescentei mais coisinhas. Só esperar o vol aceitar.

Para quem realmente acha esse script útil, pode trocar direto no fonte as seguintes linhas:

1) Troque '<[+][+]>' por \<[+][+]\>
2) Troque '<[-][-]>' por \<[-][-]\>
(tire as aspas e escape o <>)

t+


Contribuir com comentário


  
Para executar esta ação você precisa estar logado no site, caso contrário, tudo o que for digitado será perdido.
Responsável pelo site: Fábio Berbert de Paula - Conteúdo distribuído sob licença GNU FDL
Site hospedado por:

Viva o Linux

A maior comunidade Linux da América Latina! Artigos, dicas, tutoriais, fórum, scripts e muito mais. Ideal para quem busca auto-ajuda em Linux.