툴셋의 역사
당신은 그런 도구를 원하는 첫 번째 사람이 아닙니다. 사람들은 30 년 동안 그러한 도구를 원해 왔습니다. 그리고 그들은 거의 오랫동안 존재 해 왔습니다.
이러한 종류의 가장 초기 도구는 Rich Salz에 의해 설명 된 Daniel J. Bernstein의 "pty"패키지였습니다. "Ginsu knife"는 Bernstein이 nethack (sic!)에서 속임수를 쓰려고 1990 년대 초에 쓴 글입니다. "pty"패키지의 버전 4는 1992 년에 출판되었습니다 comp.sources.unix
(볼륨 25 문제 127 ~ 135). 여전히 월드 와이드 웹에서 찾을 수 있습니다. Paul Vixie는 당시에 다음과 같이 설명했습니다.
내가 무엇을 말할 수 있습니까? 얇게 자르고 깍둑 썰기하며 설거지를하고 개를 걷습니다. 그것은 "그냥 작동합니다", 즉 당신이 지시를 따를 때 머리카락을 당기거나 치아를 gn거나 다른 표준 포팅 활동없이 작업 패키지를 얻을 수 있습니다.
번스타인 (Bernstein)은 1999 년 4 월 7 일 또는 그 이전에 "ptyget"패키지로 이것을 업데이트했다.
나는 새로운 의사 -tty 할당자인 ptyget을 구성했습니다. 알파 버전은 ftp://koobera.math.uic.edu/pub/software/ptyget-0.50.tar.gz
입니다. ptyget 메일 링리스트가 있습니다. 참여하려면에 빈 메시지를 보내십시오
djb-ptyget-requ...@koobera.math.uic.edu
. 나는 ptyget의 인터페이스를 처음부터 설계했다. pty보다 훨씬 모듈 식입니다. 기본 pty 인터페이스는 이제 세 부분으로 나뉩니다.
ptyget
: 패키지의 유일한 setuid 프로그램 인 작은 저수준 프로그램으로 새로운 의사 tty를 할당하고 선택한 프로그램으로 전달합니다.
ptyspawn
: 의사 tty에서 자식 프로세스를 실행하고 종료되기를 기다리고 중지를 관찰하는 또 다른 작은 프로그램
ptyio
: 데이터를 앞뒤로 이동시키는 또 다른 약간 큰 프로그램
구긴 수 칼 pty
은 이제 철자 ptybandage
가되는데 이것은 동의어이다 ptyget ptyio -t ptyspawn
. pty -d
의사 프로그램에 네트워크 프로그램을 첨부하기 위해 이제 철자가 사용됩니다 ptyrun
. 이는 동의어입니다 ptyget ptyio ptyspawn
. 및 nobuf
동의어입니다
ptyget ptyio -r ptyspawn -23x
. 세션 관리 기능을 별도의 패키지로 분리했습니다.
그 별도의 패키지는 "sess"패키지였습니다.
"ptyget"은 Berstein의 자체 출판되지 않은 "redo"빌드 시스템의 초기 버전과 게시 된 몇 안되는 인스턴스 중 하나를 보여주는 것으로 유명합니다. dependon
의 명확한 선구자 redo-ifchange
입니다.
용법
ptybandage
ptybandage
사람들이 일반적으로 로그인 세션에서 원하는 것입니다. 주요 사용 사례는 표준 입력, 출력 또는 오류가 터미널에 연결되어 있는지 여부에 민감한 프로그램을 실제로는 셸 파이프 라인에 있거나 표준 파일 디스크립터가 파일로 경로 재 지정되어 있어도 그렇게 작동하는 것입니다.
그것은 (물론, 적절한 외부 명령이어야한다)를 실행하는 명령을 취하고 그 표준 입력, 출력 및 오류에 이르기까지 그 연결 단자에 연결되어 있다고 생각하는 방식으로 실행 ptybandage
의를 원래 표준 입력, 출력 및 오류.
작업 제어 쉘에서 실행하는 뉘앙스를 처리하여 터미널 STOP 문자 ptybandage
가 내부 터미널에 연결된 프로그램 실행을 중지 할뿐 아니라 중지합니다.
ptyrun
ptyrun
사람들이 일반적으로 TCP 네트워크 서버에서 원하는 것입니다. 주요 사용 사례는 터미널을 설정하지 않은 원격 실행 환경으로, 터미널이 없을 때 원하는대로 작동하지 않는 프로그램을 실행합니다.
작업 제어 쉘에서 실행되지 않을 것으로 예상되며 실행중인 명령이 중지 신호를 수신하면 다시 시작됩니다.
사용 가능한 툴셋
Dru Nelson은 "pty"버전 4와 "ptyget"을 모두 게시합니다.
Paul Jarc는 운영 체제 별 의사 터미널 장치 ioctl을 운영 체제에서 더 이상 실제로 제공하지 않는 문제를 처리하려고 시도하는 고정 된 버전의 ptyget을 게시합니다.
nosh 소스 패키지에는 Laurent Bercot의 도구와 nosh 패키지 자체의 의사 터미널 관리 명령 을 사용하는 유사한 스크립트 ptybandange
와 ptyrun
스크립트 가 제공됩니다 execline
. nosh 버전 1.23부터는 nosh-terminal-extras 패키지에 사전 패키지되어 있습니다. (이전 버전은 소스로 만든 사람들에게만 제공했습니다.)
몇 가지 예는
Jurjgen Oskam ptybandage
은 AIX 에서 사용하여 here 문서의 입력을 명시 적으로 열고 프로그램에서 제어 프롬프트를 통해 비밀번호 프롬프트를 읽는 프로그램에 입력합니다.
$ ptybandage dsmadmc << EOF> uit.txt
요 스카
암호
쿼리 세션
쿼리 프로세스
떠나다
EOF
Andy Bradfordptyrun
는 daemontools 및 ucspi-tcp 에서 OpenBSD 를 사용하여 bgplgsh
대화식 라우터 제어 프로그램을 네트워크를 통해 액세스 할 수있게 만드는 한편 터미널과 통신한다고 생각합니다.
#! / bin / sh
exec 2> & 1
exec envuidgid rviews tcpserver -vDRH0 0 23 ptyrun / usr / bin / bgplgsh
추가 자료