+ Responder ao Tópico



  1. #1

    Question Relatório em Shell Script

    Preciso fazer um relatório em Shell Script para um trabalho de acesso à internet dos usuários. Onde as informações para cada usuário estarão assim :

    date=2016-01-06 time=14:39:44 logid=0000000015 type=traffic subtype=forward level=notice vd=root srcip=157.86.21.20 srcport=49556 srcintf="vlx2-1" dstip=161.148.40.200 dstport=80 dstintf="port31" poluuid=bdd3c878-4385-51e5-1ca3-500d398a7f5c sessionid=443818184 proto=6 action=start user="RAFAELA.LUNGA" group="USR_GRP_PADRAO" policyid=48 dstcountry="Brazil" srccountry="Brazil" trandisp=snat transip=157.86.41.235 transport=49556 service="HTTP" duration=0 sentbyte=0 rcvdbyte=0 appcat="unscanned"

    O relatório final deve ser mais ou menos como este: http://www.lintronix.com.br/imagens/...io-usuario.jpg
    Nunca usei Shell Script para este fim, gostaria de algumas dicas.

  2. #2

    Question Dúvida ! IMPORTANDO ARQUIVO EM SHELL SCRIPT

    Eu tenho um arquivo .txt com várias informações sobre vários usuários de uma empresa. Cada usuário tem a informação como a seguir:

    date=2016-01-06 time=14:39:44 logid=0000000015 type=traffic subtype=forward level=notice vd=root srcip=157.86.21.20 srcport=49556 srcintf="vlx2-1" dstip=161.148.40.200 dstport=80 dstintf="port31" poluuid=bdd3c878-4385-51e5-1ca3-500d398a7f5c sessionid=443818184 proto=6 action=start user="RAFAELA.LUNGA" group="USR_GRP_PADRAO" policyid=48 dstcountry="Brazil" srccountry="Brazil" trandisp=snat transip=157.86.41.235 transport=49556 service="HTTP" duration=0 sentbyte=0 rcvdbyte=0 appcat="unscanned"


    Eu pretendo criar em Shell Script o seguinte, a pessoa procura através do nome do usuário e recebe todas essas informações nas quais eu colocarei de uma forma mais organizada (o arquivo bruto .txt é todo assim).
    Como que eu faço pra poder importar as informações desse outro arquivo para o meu script e fazendo com que ele retorne SOMENTE as informações do usuário ao qual foi solicitado ?



  3. #3

    Padrão Re: Relatório em Shell Script

    Esse script é bem básico, a principio faz o que você pede só falta colocar os seus parametros, caso queira refinar sua pesquisa pode se definir onde se começa a copiar o arquivo ate o final dele, tudo depende do seu arquivo txt, e de como você quer salvar ele, existe muito material na internet, uma pesquisa rapida sobre salvar conteudo de texto com shell script vai tirar qualquer duvida que te restar.


    ##Script para buscar uma palavra dentro de um arquivo##
    ##Autor: Samuel Oliveira##


    #!/bin/bash
    #########funcoes do programa#########

    #Recebe o que se deseja procurar
    echo "Digite o nome que deseja buscar:"
    read palavra

    #comando para pesquisar dentro do arquivo, e cria um arquivo com a saida da pesquisa
    grep -R $palavra "caminho do seu arquivo" > /lugar que você quer salvar o arquivo/$palavra.txt

    #imprime na tela o que foi encontrado na pesquisa e salvo no documento
    echo $palavra

    #mostra o arquivo e local onde foi criado
    echo "arquivo criado em /lugar que você quer salvar o arquivo/$palavra.txt"

  4. #4

    Padrão Re: Relatório em Shell Script

    Obrigada samuelrealnet , funcionou direitinho !



  5. #5

    Padrão Re: Relatório em Shell Script

    Falta apenas um detalhe no relatório. No shell eu estou usando o comando para a pesquisa sugerido pelo samuelrealnet :

    grep -R $palavra "caminho do seu arquivo" ...

    E está funcionando perfeitamente, porém andei mudando uns nomes de usuários no arquivo de texto para fazer uns testes.
    Quando eu pesquiso por exemplo o usuário MICHELE.ATAÍDE , aparece somente os dados desse usuário:

    Porém quando há dois usuários com o mesmo sobrenome (ex: JULIANA.SILVA e PATRICIA.SILVA) , se eu pesquisar apenas a JULIANA.SILVA , as informações da PATRÍCIA.SILVA também aparecem.

    Gostaria de que somente aparecesse o usuário o qual foi pesquisado.

  6. #6

    Question Comando para selecionar apenas trecho de um texto

    Eu tenho um relatório de acesso de um usuário abaixo :

    date=2016-01-06 time=14:39:44 logid=0000000015 type=traffic subtype=forward level=notice vd=root srcip=157.86.21.20 srcport=49556 srcintf="vlx2-1" dstip=161.148.40.200 dstport=80 dstintf="port31" poluuid=bdd3c878-4385-51e5-1ca3-500d398a7f5c sessionid=443818184 proto=6 action=start user="RAFAELA.LUNGA" group="USR_GRP_PADRAO" policyid=48 dstcountry="Brazil" srccountry="Brazil" trandisp=snat transip=157.86.41.235 transport=49556 service="HTTP" duration=0 sentbyte=0 rcvdbyte=0 appcat="unscanned"

    Eu preciso de um comando em shell script que filtre e exiba só os itens srcip, dstip e user. Já tentei usar o grep de diversas formas diferentes,mas não consigo. Alguém poderia me ajudar ?



  7. #7

    Padrão Re: Comando para selecionar apenas trecho de um texto

    Tenta usar o egrep, ele eh muito melhor neste caso. Pois acredito que vc precise usar ER para filtrar da forma que vc quer.

    Abraços.

  8. #8

    Padrão Re: Comando para selecionar apenas trecho de um texto

    mas como ? egrep eu ja tentei



  9. #9

    Padrão Re: Relatório em Shell Script

    Bom dia, sei que a pergunta é antiga, mas . . .
    Para BUSCAR no arquivo.txt, faça:
    echo -e "\n Informe o termo a ser procurado:"
    read -p " " TERMO
    egrep -i "\b$TERMO\b" arquivo.txt
    Esse "\b" nos extremos do $TERMO, são limitadores e BUSCAM a PALAVRA EXATA.

    O awk, tambem faz a busca:
    awk '$18 ~ /'$TERMO'/ {print $1,$2,$18}' arquivo.txt
    Explicando o awk:
    Se o Campo 18 ($18) casar com a expressão contida na VAR $TERMO, imprime os campos
    $1,$2,$18



    Att.:
    Marcelo

  10. #10

    Padrão

    Bom dia, sei que a pergunta é antiga, mas . . .
    Para BUSCAR no arquivo.txt, faça:
    echo -e "\n Informe o termo a ser procurado:"
    read -p " " TERMO
    egrep -i "\b$TERMO\b" arquivo.txt
    Esse "\b" nos extremos do $TERMO, são limitadores e BUSCAM a PALAVRA EXATA.
    O awk, tambem faz a busca:
    awk '$18 ~ /'$TERMO'/ {print $1,$2,$18}' arquivo.txt
    Explicando:
    Se o Campo 18 ($18) casar com a expressão contida na VAR $TERMO, imprime os campos
    $1,$2,$18
    Colocando $0
    Imprime a linha inteira.



    Att.:
    Marcelo