Linux에서 SSH 파이프를 사용하는 방법
UNIX 파이프는 UNIX 및 UNIX와 유사한 운영 체제 개발의 기념비적인 단계입니다. 이를 통해 사용자는 기본 프로그램의 입력과 출력을 함께 연결하여 복잡한 컴퓨팅 작업을 수행할 수 있습니다. 이 기사에서는 SSH 프로토콜을 사용하는 네트워크를 통해 Linux에서 UNIX 파이프를 사용하는 방법을 보여줌으로써 이를 확장합니다.
Unix 파이프라인 이해
Unix(및 확장하여 Linux)의 파이프는 프로그램을 함께 연결하고 함께 작동하도록 만드는 데 사용됩니다. 예를 들어, cat
을 사용하면 파일의 내용을 표시할 수 있지만 파이프(|
)를 사용하면 <를 연결할 수 있습니다. i=3> 명령을 명령에 추가하면 파일을 더 쉽게 읽을 수 있습니다.cat
more
기본 아이디어는 다음과 같습니다. program1 fileX | program2
. 하지만 파일 하나와 프로그램 두 개에만 국한되는 것은 아닙니다. 배관은 당신이 생각할 수 있는 만큼 많은 수정자를 사용하여 필요한 만큼 발전할 수 있습니다.
다음은 SSH 상황에서 파이프(|
)를 효과적으로 활용하는 몇 가지 방법입니다.
압축된 디렉터리 자동 전송
UNIX 파이프를 사용하는 가장 일반적인 방법 중 하나는 프로그램의 출력을 로컬 시스템의 파일에 저장하는 것입니다. 예를 들어, echo "Hello, MakeTechEasier!"| tee Hello
을 실행하면 프로그램 echo
이 실행되는 동시에 “Hello, MakeTechEasier!”라는 문자열도 저장됩니다. 파일 내부에 “Hello”가 있습니다.
즉, 이 아이디어를 사용하여 두 개의 Linux 호스트 간에 디렉터리를 전송할 수 있습니다. 그렇게 하려면 tar
을 사용하여 보내려는 폴더를 읽은 다음 이를 SSH 데몬으로 파이프하세요.
이 명령은 폴더를 tar 아카이브로 묶어 명령의 표준 출력으로 보냅니다. 그런 다음 UNIX 파이프는 해당 데이터를 읽고 SSH를 사용하여 원격 Linux 호스트로 보냅니다.
이 명령을 반대로 실행하여 원격 호스트에서 파일을 가져올 수도 있습니다.
원격 호스트에서 파일 푸시 및 검색
파이프와 SSH를 사용하여 네트워크를 통해 개별 파일을 보낼 수도 있습니다. 이는 파일 내용을 로드하고 SSH를 통해 보내는 방법으로 cat
을 사용하여 작동합니다.
원격 호스트는 로컬 cat 프로세스로부터 출력 스트림을 수신하고 파일을 있는 그대로 재구성합니다.
원격 호스트에서 파일을 검색하려면 명령 순서를 반대로 하고 원격 파일의 경로를 제공해야 합니다.
원격으로 드라이브 백업 및 복원
파일 및 디렉터리 전송과 유사하게 UNIX 파이프 및 SSH를 사용하여 Linux에서 원격으로 전체 드라이브를 백업할 수 있습니다. 이는 빠른 오프사이트 백업을 생성하고 싶지만 현재 예비 물리적 드라이브가 없는 경우 유용할 수 있습니다.
전체 드라이브를 백업하려면 ‘if=’ 변수를 백업하려는 드라이브로 설정하여 dd
를 실행한 다음 SSH 데몬으로 파이프하세요.
이 명령을 반대로 하면 원격 시스템의 디스크 이미지를 실제 디스크로 복원할 수도 있습니다.
또한 이 SSH 파이프 구문은 개별 디스크 파티션에서도 작동합니다. 예를 들어 시스템의 “/dev/sda4″에 /home 파티션이 있는 경우 다음 명령을 실행하여 백업을 생성할 수 있습니다.
오디오 입력을 원격 시스템으로 리디렉션
SSH 파이프의 장점 중 하나는 마치 로컬 리소스인 것처럼 원격 시스템과 상호 작용할 수 있다는 것입니다. 여기에는 시스템의 오디오 입력과 같은 장치 파일을 활용하는 기능이 포함됩니다.
이렇게 하려면 SSH를 사용하여 원격 ALSA 하위 셸을 실행하고 해당 출력을 로컬 ALSA 데몬으로 보냅니다.
그러면 원격 시스템의 기본 오디오 입력 장치를 듣고 시스템에서 듣는 내용을 재생합니다. 즉, 명령을 뒤집어 로컬 컴퓨터의 오디오 입력을 원격 호스트의 오디오 출력으로 보냅니다.
ALSA SSH 파이프는 다른 오디오 재생 도구와 결합해도 작동합니다. 예를 들어 SSH 파이프의 arecord 출력을 ffmpeg로 보낼 수 있습니다.
원격 웹캠에서 라이브 비디오 스트리밍
Linux에서 SSH 파이프를 효과적으로 활용하는 또 다른 방법은 라이브 비디오 웹캠 피드를 스트리밍하는 것입니다. 오디오와 마찬가지로 이를 통해 원격 호스트의 장치를 활용하고 로컬 컴퓨터에서 출력을 렌더링할 수 있습니다.
원격 호스트의 웹캠에서 스트리밍하려면 ffmpeg 하위 셸을 사용하여 SSH를 실행한 다음 이를 로컬 컴퓨터의 비디오 재생 클라이언트로 파이프합니다.
이 명령은 원격 시스템의 첫 번째 웹캠에서 원시 비디오 출력을 스트리밍합니다.
원격 웹캠의 영상을 별도의 파일로 녹화하는 것도 가능합니다. 데이터를 비디오 플레이어로 리디렉션하기 전에 SSH 파이프에서 티로 데이터를 보내면 됩니다.
원격 콘솔에서 텍스트 인쇄
오디오 및 비디오 외에도 SSH 파이프를 사용하여 원격 시스템의 TTY에 원시 텍스트를 보낼 수도 있습니다. 이는 GUI가 없는 시스템에 상태 메시지를 보내려는 경우에 유용합니다.
시작하려면 로컬 머신에 FIFO 파이프를 생성하세요.
FIFO를 사용하여 리스닝 tail
명령을 실행하고 해당 출력을 SSH 데몬으로 보냅니다.
echo 명령을 사용하여 텍스트 데이터를 전송하여 새 FIFO 파이프가 네트워크를 통해 작동하는지 테스트합니다.
원격 데이터를 로컬 클립보드로 파이핑
시스템 클립보드의 가장 큰 단점은 로컬 시스템에서만 작동한다는 것입니다. 여러 대의 컴퓨터로 작업하고 임시 파일을 만들지 않고 데이터를 전송하려는 경우 문제가 됩니다.
이 문제를 해결하는 한 가지 방법은 원격 파일을 읽고 로컬 시스템 클립보드로 직접 보낼 수 있는 SSH 파이프를 만드는 것입니다.
이 명령은 원격 시스템에 연결하고 cat 유틸리티를 실행한 다음 “ramces.txt” 파일 읽기를 시작합니다. 완료되면 원격 데이터를 로컬 컴퓨터로 다시 전송하고 이를 시스템 클립보드로 리디렉션합니다.
다음 명령을 사용하여 시스템의 현재 클립보드를 원격 시스템에 파일로 푸시할 수도 있습니다.
UNIX 파이프와 SSH를 사용하여 네트워크를 통해 데이터를 전송하는 방법을 배우는 것은 컴퓨터 네트워크 작동 방식을 이해하는 첫 번째 단계에 불과합니다. Traceroute를 사용하여 패킷이 이동하는 위치를 추적하여 네트워크에 대해 자세히 알아보세요.
이미지 출처: Unsplash를 통한 Mikhail Fesenko. 모든 변경 사항과 스크린샷은 Ramces Red가 작성했습니다.
답글 남기기