Picture of Roberto Sobrinho
Roberto Sobrinho

03/07/2024

Localizando Strings Específicas em Logs Zipados no Linux

Olá, pessoal! Tudo bem? Recentemente, me deparei com uma situação interessante enquanto estava realizando auditorias em um ambiente Oracle. Precisava localizar logs específicos dentro de diversos arquivos .zip no Linux, onde cada arquivo zipado continha logs de auditoria. A tarefa envolvia procurar por uma string específica dentro desses arquivos.

Para facilitar o processo, utilizei um script shell que percorre todos os arquivos .zip em um diretório e procura pela string desejada dentro dos aquivos zipados.

O Problema

A string que eu precisava localizar nos logs era “create view PHONE”. Dentro desses logs estão todos os comandos emitidos a partir do servidor oracle via SQLPLUS com usuários SYSDBA, como por exemplo:

    create view vw_phone
    CREATE    VIEW    vw_PHONE

    É interessante observar que há diferenças de espaçamento e de sensibilidade a maiúsculas e minúsculas (case sensitive e case insensitive)

    Solução

    Para resolver esse problema, criei um script shell que percorre todos os arquivos .zip em um diretório e procura pela string “create” “view” “phone”. Abaixo está o script que utilizei:

      #!/bin/bash
      
      # Verifica se pelo menos um argumento foi passado
      if [ "$#" -lt 1 ]; then
          echo "Uso: $0 <palavra1> [palavra2] [palavra3]"
          exit 1
      fi
      
      # Atribui os parâmetros às variáveis, se fornecidos
      word1=$1
      word2=$2
      word3=$3
      
      # Constrói o padrão de busca
      pattern="$word1"
      if [ -n "$word2" ]; then
          pattern="$pattern\s+.*$word2"
      fi
      if [ -n "$word3" ]; then
          pattern="$pattern\s+.*$word3"
      fi
      
      # Diretório onde estão os arquivos .zip
      dir="/auditoria/var/log"
      
      # Loop para processar cada arquivo .zip no diretório
      for zip_file in "$dir"/*.zip; do
          echo "Procurando em $zip_file..."
      
          # Descompacta o conteúdo do arquivo zip e procura o padrão construído
          unzip -p "$zip_file" | grep -iP "$pattern"
      done
      

      Este script é projetado para realizar uma busca em arquivos compactados .zip, localizados em um diretório específico, por palavras ou frases fornecidas pelo usuário como parâmetros. Ele exige que pelo menos uma palavra seja fornecida, mas permite até três palavras como parâmetros.

      O script começa verificando se pelo menos um parâmetro foi passado. Se não houver nenhum parâmetro, ele exibe uma mensagem de uso e encerra a execução. Em seguida, ele atribui os parâmetros fornecidos a variáveis específicas, que serão usadas para construir o padrão de busca.

      O padrão de busca é construído dinamicamente com base nos parâmetros fornecidos. O primeiro parâmetro é obrigatório, e os segundo e terceiro parâmetros, se fornecidos, são adicionados ao padrão, permitindo a existência de espaços ou outros caracteres entre as palavras.

      Depois, o script define o diretório onde estão localizados os arquivos .zip que serão processados. Ele então itera sobre cada arquivo .zip nesse diretório, descompacta o conteúdo diretamente na saída padrão e utiliza o comando grep para buscar o padrão construído no conteúdo descompactado.

      Por fim, o script exibe os resultados da busca, indicando em qual arquivo foi encontrada a correspondência com o padrão especificado. Se vários arquivos forem processados, ele repete esse processo para cada um, buscando o padrão em todos os arquivos .zip no diretório especificado.

      Exemplos de Uso

      Auditar logs zipados pode ser uma tarefa cheia de passos, especialmente quando lidamos com muitos arquivos comprimidos. Este script shell fornece uma maneira simples e eficaz de procurar strings especificas dentro de arquivos .zip. 👋🚀🚀🚀

      #GuinaNãoTinhaDó #SeReagirBúmViraPó #CaceteDeAgulha #ClienteSemNoção #AjudaODBA #DBAHerói #FitaLoka #MetaTomarSeuLugar #QueFita #TicTac09:40 #VidaBandida #OMetrôVaiPassar #1000Fita #ZePovinho #Dimas #1000Faces #9M #GuinaTaEmCana #SemMiséria #DiheiroNaMão #SuguroVaiCobrir

      Compartilhe

      Facebook
      Twitter
      LinkedIn
      WhatsApp
      Email
      Print

      Pesquisar

      Roberto Sobrinho

      Sou Roberto Fernandes Sobrinho, também conhecido como Sobrinho DBA , pós graduado em “Architecture and Database Administration”, entusiasta, dedicado e com 20 anos de experiência com Oracle Database e suas diversas distribuições e variações.

      Oracle ACE Associate

      2025

      Specialist

      Exadata Database Machine X9M

      Professional

      Oracle Database Administration

      Professional

      Oracle Database 19c: RAC, ASM, & Grid Infra Administrator

      Professional

      Oracle Autonomous Database Cloud

      Professional

      Oracle Cloud Database Migration and Integration

      Professional

      Oracle Database PL/SQL Developer

      Associate

      Oracle Cloud Infrastructure Architect

      Associate

      Oracle Cloud Infrastructure Foundations

      Categorias

      Categorias

      Tags

      Localizando Strings Específicas em Logs Zipados no Linux