명령줄이 아닌 Telnet 서버

명령줄이 아닌 Telnet 서버

저는 MUD 서버와 같은 쉘 인터페이스를 제공하지 않고 텔넷 연결을 허용하는 간단한 방법을 찾고 있습니다. 저는 실제로 다음과 같은 정적 콘텐츠를 제공하려고 합니다.

telnet towel.blinkenlights.nl

서버는 각각의 새로운 텔넷 연결에 대해 타사 애플리케이션(이 경우 VLC)의 새 인스턴스를 시작하고 애플리케이션의 출력(ASCII 비디오 렌더링)을 원격 사용자에게 직접 전달해야 합니다.

여기서 시작할 수 있는 곳에 대한 제안이 있나요?

답변1

간단한 해결책은 다음과 같이 VLC를 사용자의 로그인 셸로 만드는 것입니다.

joe:AU03oahyYRjl6:1234:56:Joe Smith:/usr/joe:/usr/bin/cvlc

또는 실행하고 싶은 프로그램. 이에 대한 제한은 명령줄 인수를 지정할 수 없다는 것입니다. 아마도 일반 항목이 필요할 것입니다 passwd.

joe:AU03oahyYRjl6:1234:56:Joe Smith:/usr/joe:/bin/sh

그런 다음 각 사용자에게 .profile다음과 같은 내용을 제공합니다.

exec /usr/bin/cvlc --(당신의 선택) playlist.xspf

또는 원하는 인수.

"ASCII 비디오 렌더링"이 무슨 뜻인지 잘 모르겠습니다. 사용자의 워크스테이션에서 오디오/비디오를 재생하시겠습니까? 사용자가 X11 서버를 실행하고 있습니까? 그렇다면 넣어야합니다

w=`who am i`
d=`expr "$w" : '.*(\(.*\))'`

.profile추가한 다음

--x11-display "$d":0

에게당신의 선택. 경고: 이 작업이 실패할 수 있는 다양한 조건이 있습니다.

답변2

http://www.dest-unreach.org/socat/doc/socat.html#EXAMPLE_ADDRESS_EXEC

socat TCP4-LISTEN:5555,fork,tcpwrap=script \
EXEC:/bin/myscript,chroot=/home/sandbox,su-d=sandbox,pty,stderr

연결(TCP4-LISTEN)을 허용하고 각 연결에 대한 새로운 하위 프로세스를 포크하는 간단한 서버입니다. 모든 어린이는 단일 릴레이 역할을 합니다. 클라이언트는 /etc/hosts.allow 및 /etc/hosts.deny의 데몬 프로세스 이름 "script"에 대한 규칙과 일치해야 합니다. 그렇지 않으면 액세스가 거부됩니다("man 5 호스트_액세스" 참조). 프로그램 실행을 위해 하위 프로세스 chroot는 /home/sandbox로, su는 사용자 sandbox로 이동한 다음 /home/sandbox/bin/myscript 프로그램을 시작합니다. Socat과 myscript는 의사 tty(pty)를 통해 통신합니다. myscript의 stderr은 stdout으로 리디렉션되므로 오류 메시지는 socat를 통해 연결된 클라이언트로 전송됩니다.

5555를 23(Telnet의 기본 포트 번호)으로 변경할 수 있습니다.

/bin/myscript를 VLC 스크립트 또는 바이너리로 변경하세요.


http://www.dest-unreach.org/socat/doc/socat.html#ADDRESS_TYPES

EXEC:<command-line>

상위 프로세스와의 통신을 설정하고 execvp() 를 사용하여 지정된 프로그램을 호출하는 하위 프로세스를 포크합니다. <command-line>은 단일 공백으로 구분된 인수를 사용하는 간단한 명령입니다. 프로그램 이름에 '/'가 포함된 경우 마지막 '/' 다음 부분은 ARGV[0]으로 간주됩니다. 프로그램 이름이 상대 경로인 경우 $PATH를 통해 프로그램을 찾기 위한 execvp() 의미 체계가 적용됩니다. 프로그램이 성공적으로 시작된 후 socat는 프로세스의 stdin에 데이터를 쓰고 기본적으로 소켓쌍()에 의해 생성된 UNIX 도메인 소켓을 사용하여 해당 stdout에서 읽습니다.


비슷한 솔루션이 가능하다고 생각합니다.넷캣또는inetd

답변3

Linux 시스템인 경우 inetd또는 를 사용하십시오 xinetd. 표준 텔넷 포트를 가리키는 새 서비스를 만들고 실행 파일을 실제 서비스로 지정합니다.

관련 정보