SMB를 사용하여 로컬 컴퓨터의 로컬 명령으로 파일 내용을 파이프합니다.

SMB를 사용하여 로컬 컴퓨터의 로컬 명령으로 파일 내용을 파이프합니다.

원격 서버에 100gig 파일이 있습니다. 제가 해야 할 일은 해당 컴퓨터에 연결하고 파일을 zcat한 다음 zcat의 출력을 로컬 컴퓨터의 명령으로 파이프하는 것입니다... smbclient가 도움이 되기를 바라지만 로컬에서 명령을 실행하는 방법을 찾을 수 없는 것 같지만 파이프의 왼쪽은 원격 소스에서 나옵니다.

내 상황이 어떤 모습일 것 같나요?명령어로 구성 원격 Zcat 명령

remoteZcatCommand 100gigRemotefile.gz | grep findSomeStuff

grep findSomeStuff이는 실제로 로컬 시스템에 하드웨어가 필요한 명령이므로 약간 오해의 소지가 있을 수 있습니다 . 또한 100gig 파일을 로컬 컴퓨터로 옮기는 것은 옵션이 아닙니다.

답변1

smbclient -E -U $USERNAME //server/sharename $PASSWORD -c 'get \\dir\\filename.gz /dev/fd/1' 2>/dev/null | zcat | yourcommand

우리가 실제로 원하는 출력을 엉망으로 만드는 표준 출력 대신 표준 오류로 모든 메시지를 보내 -E도록 지시합니다 . smbclient저는 이 메시지에 관심이 없습니다 2>/dev/null. 따라서 메시지는 입니다.

-U $USERNAMESMB 서버에 연결할 때 사용해야 하는 사용자 이름을 나타냅니다 .

분명 해야합니다 //server/sharename.

SMB 서버의 $PASSWORD비밀번호 .$USERNAME

-c 'get \\dir\\filename.gz /dev/fd/1'실행해야 하는 명령은 다음과 같습니다. 지정된 파일(백슬래시를 두 배로 늘려 이스케이프 처리됨)을 가져와 명령의 표준 출력과 동일한 로컬 파일로 보냅니다 /dev/fd/1. 그런 다음 zcat추가 처리가 필요하기 전에 표준 출력을 파이프하여 확장합니다.

관련 정보