netcat에서 받은 데이터를 매개변수로 다른 스크립트에 전달하는 방법은 무엇입니까?

netcat에서 받은 데이터를 매개변수로 다른 스크립트에 전달하는 방법은 무엇입니까?

간단한 bash 스크립트가 있습니다 nc.

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

4444포트 에서 연결을 수신합니다 TCP. 가능하다면 수신된 데이터를 로 리디렉션하지 않고 filename.out각 데이터 덩어리(텍스트 한 줄)를 script.sh매개 변수로 전달하고 싶습니다. 어떻게 해야 하나요?

미리 감사드립니다.

편집: 나는 또한 다음을 시도했습니다.

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

하지만 이건 작동하지 않아

답변1

다음은 다중 입력 스크립트의 진입점입니다.

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

# your script's payload here

#!이 문장이 자명해지길 바라요

두 번째 줄에

$# -ge 1하나 이상의 명령줄 인수를 테스트 중입니다.

-a 부울 값 및 연산자입니다.

-f "$1"첫 번째 인수가 파일인지 테스트

&&다음은 이전 조건이 참일 경우 실행될 명령입니다.

||다음은 테스트 조건이 유지되지 않는 경우 발생하는 상황입니다.

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

-또는-

nc -k -l 127.0.0.1 4444 | my_processing_script

따라서 매개변수가 있고 파일인 경우 입력은 파일이고, 그렇지 않은 경우 입력은 파이프에서 옵니다."-"

그러면 원하는 대로 작업을 실행할 수 있습니다. 누구나

제가 테스트한 페이로드는

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

내 입력은 netstat -rn명령에서 나오며 어떤 방식으로든 작동합니다. 나는 그것이 당신이 요구하는 것이기를 바랍니다.

관련 정보