한 터미널의 출력을 다른 터미널에 어떻게 연결합니까?

한 터미널의 출력을 다른 터미널에 어떻게 연결합니까?

가상 터미널에서 현재 실행 중인 터미널(tty1)의 출력에 연결하고 이를 캡처해야 합니다(X 서버 실행).

답변1

저는 Perl이라는 프로그램을 발견했습니다 ttylog. 이것은 CPAN에서 사용할 수 있는 Perl 프로그램입니다.여기. 여기에는 몇 가지 주의 사항이 있는데, 그중 하나는 누군가가 내 상자에 SSH로 접속하는 과정의 일부로 생성된 터미널에 연결하는 방법만 알아낼 수 있다는 것입니다. 또 다른 방법은 높은 권한(예: 루트 또는 sudo)으로 실행해야 한다는 것입니다.

하지만 작동합니다!

예를 들어

먼저 용어 1의 상자에 SSH를 통해 접속하세요.

TERM#1% ssh saml@grinchy

이 새 터미널의 tty를 확인하세요.

TERM#1% tty
/dev/pts/3

이제 다른 터미널(TERM#2)에서 다음 명령을 실행합니다.

TERM#2% ttylog pts/3
DEBUG: Scanning for psuedo terminal pts/3
DEBUG: Psuedo terminal [pts/3] found.
DEBUG: Found parent sshd pid [13789] for user [saml]

이제 용어 #1로 돌아가서 무언가를 입력하면 용어 #2에 표시됩니다.

터미널 수

내가 시도한 모든 명령(top, ls 등)이 작동합니다 ttylog.

답변2

보고:

man 1 script

예를 들어:

script -f /dev/tty1

원천

답변3

그것은. /dev/vcs* 및 /dev/vcsa* 장치는 /dev/tty* 장치(가상 터미널)에 해당합니다. F1=tty1=vcs1/vcsa1 등입니다. vcs/vcsa는 "현재" 가상 터미널의 tty와 같습니다.

루트로서 스냅샷을 찍는 것처럼 이러한 장치(예: cat /dev/vcs2)를 분류하고 해당 VT(예: F2의 /dev/tty2)에서 내용을 볼 수 있습니다. vcsa*는 터미널(화면) 크기에 대한 정보를 포함한다는 점에서 vcs*와 다릅니다. 이는 터미널에 할당된 메모리에서 수집된 화면에 표시되는 문자의 원시 스냅샷이므로 보기 좋고 구문 분석하기 쉬운 출력을 기대하지 마십시오.

단점은 정보가 너무 빨리 지나가면 포착하기 어려울 수 있다는 것입니다. 여러 화면을 따라야 한다면(직접 시도하지는 않았습니다) tail -f /dev/vcs1이 작동할까요? 먼저 파일로 리디렉션하는 것이 가장 쉽습니다. 터미널의 크기가 동일하므로 VT(F1-F6)를 살펴보는 것도 좋은 방법일 수 있습니다. 내 경험상 vcsa* 장치보다는 vcs*를 사용하는 것이 더 좋습니다.

그래도 작동하지 않으면 관리자가 터미널의 활동을 모니터링할 수 있는 "빅 브라더" 패키지 중 하나를 사용하면 됩니다.

추신: 어떤 운영 체제를 사용하고 있는지 묻는 것을 잊어버렸습니다. 이는 Linux용이지만 다른 운영 체제에도 유사한 장치가 있을 수 있습니다. 장치의 매뉴얼 페이지에서 "가상 콘솔 메모리"를 검색해 보십시오.

답변4

이것은 나에게 효과적입니다.

  • 컴퓨터 "A"(즉, 제어하려는 물리적 컴퓨터)의 키보드를 사용하여 다음을 실행합니다.screen -q

  • 컴퓨터 "B"에서 ssh컴퓨터 "A"로 연결합니다.

  • SSH 세션에서 다음을 입력합니다. screen -ls연결할 세션 ID 가져오기(다음이 포함된 행의 4자리 숫자)단말기).

  • 다음 명령을 사용하여 위 세션에 연결합니다. screen -x <session id>... 위 명령에서 받은 세션 ID 번호를 사용합니다 screen -ls.

"세션" 중 하나를 입력하면 두 "세션" 모두에서 발생하므로 예를 들어 입력하면 screen -d두 세션이 모두 종료됩니다.

관련 정보