Como passar dados recebidos do netcat para outro script como argumento?

1

Eu tenho o script simples bash nc :

#!/bin/bash
nc -k -l 127.0.0.1 4444 > filename.out

que escuta 4444 port para TCP connection. Em vez de redirecionar os dados recebidos para filename.out , eu gostaria, se possível, de passar cada parte dos dados (linhas simples de texto) para script.sh como argumento. Como eu faço isso?

Obrigado antecipadamente.

EDITAR: Eu também tentei com:

#!/bin/bash
nc -k -l 127.0.0.1 4444 | /path/to/script.sh

mas isso não funciona

    
por Miloš Đakonović 17.03.2016 / 21:41

1 resposta

1

Este abaixo é o ponto de entrada para um script com várias entradas.

#!/bin/bash
[ $# -ge 1 -a -f "$1" ] && input="$1" || input="-"

# your script's payload here

A linha #! é auto-explicativa, espero

na segunda linha

$# -ge 1 e está testando pelo menos um argumento de linha de comando

-a é o booleano e operador

-f "$1" está testando se o primeiro argumento é um arquivo

&& é seguido pela diretiva a ser executada se a condição anterior for verdadeira

|| é seguido pelo que acontece se a condição de teste não for verdadeira

nc -k -l 127.0.0.1 4444 > filename.out
my_processing_script filename.out

-ou -

nc -k -l 127.0.0.1 4444 | my_processing_script

então, se eu tenho um argumento e é um arquivo, minha entrada é esse arquivo, se não, minha entrada está vindo do canal, ou seja, "-"

então você pode executar sua coisa como quiser. Qualquer um

Eu testei com payload de

awk '{print $2}' ${input}

e minha entrada vinha do comando netstat -rn e funcionava de qualquer maneira. Eu espero que isso seja o que você está perguntando sobre

    
por 17.03.2016 / 22:07