비 명령 줄 텔넷 서버


2

나는 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

당신의 선택 . 경고 :이 문제를 일으킬 수있는 다양한 조건이 있습니다.


아마도 ASCII 비디오 렌더링이 의미합니다 아 립
Alan Curry

맞습니다. 나는 텔립 기반 텔넷 비디오 플레이어를 실험 중이다. 쉘 스크립트 래퍼를 사용하도록 솔루션을 조정할 수 있는지 알아 보겠습니다. 다른 문제는 텔넷 서버가 익명 로그인을 허용해야하며 사용자 로그인이 허용되지 않아야한다는 것입니다. 포트 22는 IP 화이트리스트를 사용하지만 포트 23은 크게 열어야합니다. 답변 해 주셔서 감사합니다. 나는 그것을 받아들이 기 전에 보안의 함의를 더 깊이 들여다 볼 것입니다. 그러나 당신이 끼워 넣은 노력에 감사드립니다. 아직 투표를 할 충분한 담당자가 없습니다.
Mikkel

음, * nix의 대부분의 버전 (전부는 아님)에서는 암호없이 사용자를 구성 할 수 있습니다. 예를 들어, vlc비밀 번호가 없으므로 귀하의 익명 성 요구 사항을 충족시킬 것이라고 공개됩니까?
Scott

논리를 추가 할 수 있습니다. vlc '에스 .profile 원본 주소의 유효성을 검사 할 수는 있지만 보안이 거의 제공되지 않습니다.
Scott

이 기능은 다음에서 지원되는 것처럼 보입니다. telnetd 우분투에서,하지만 난 아직도 조사 중이 야. 그러나 나는 인증 된 사용자를 위해 비디오를 재생할 수있었습니다. test 간단한 쉘 스크립트를 작성하고이를 로그인 쉘로 설정하십시오. #!/bin/bash \n cvlc -V aa /var/local/vlc/test.mp4 (수퍼 유저가 답장에서 줄 바꿈을 접기 때문에 여기에 개행 대신 \ n을 사용합니다.)
Mikkel

1

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) 및 fork   각 연결에 대한 자식 프로세스. 모든 어린이는 하나의 릴레이 역할을합니다.   클라이언트는 데몬 프로세스 이름 "script"에 대한 규칙과 일치해야합니다.   /etc/hosts.allow 및 /etc/hosts.deny, 그렇지 않으면 액세스가 거부됩니다.   ( "man 5 hosts_access"참조). 프로그램을 실행하기 위해 아동   chroot를 / home / sandbox로, su를 사용자 샌드 박스로, 그리고 나서   / home / sandbox / bin / myscript 프로그램을 시작합니다. Socat 및 myscript   pseudo tty (pty)를 통해 통신한다. myscript의 stderr로 리디렉션됩니다.   stdout, 그래서 그것의 에러 메시지는 socat을 통해   연결된 클라이언트.

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

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


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

EXEC:<command-line>

통신을 수립하는 하위 프로세스를 포킹합니다.   부모 프로세스와 함께 실행하고 지정된 프로그램을 다음과 같이 호출합니다.   execvp (). & lt; 명령 줄 & gt; 인수가 분리 된 간단한 명령입니다.   단일 공백으로. 프로그램 이름에 '/'가 포함 된 경우,   마지막 '/'는 ARGV [0]으로 간주됩니다. 프로그램 이름이 상대 일 경우   경로에서 $ PATH를 통해 프로그램을 찾기위한 execvp () 의미가 적용됩니다.   프로그램이 성공적으로 시작된 후, socat은   프로세스를 생성하고 UNIX 도메인 소켓을 사용하여 stdout에서 읽음   socketpair ()에 의해 기본값 당.


나는 비슷한 솔루션이 가능하다고 믿는다. 넷캣 또는 inetd


0

이것이 리눅스 시스템이라면, inetd 또는 xinetd. 표준 텔넷 포트를 가리키는 새 서비스를 만들고 실행 파일을 실제 서비스로 지정하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.