Historia zestawów narzędzi
Nie jesteś pierwszą osobą, która chce takiego narzędzia. Ludzie chcą takich narzędzi od 30 lat. I istnieją też prawie tak długo.
Najwcześniejszym narzędziem do tego rodzaju rzeczy był pakiet „pty” Daniela J. Bernsteina, opisany przez Richa Salz'a jako „nóż Ginsu”, który Bernstein napisał na przełomie lat 90. XX wieku, aby oszukiwać w nethacku (sic!). Wersja 4 pakietu „pty” została opublikowana w 1992 r. Do comp.sources.unix
(tom 25, numery 127–135). Nadal można go zlokalizować w sieci WWW. Paul Vixie opisał to wtedy:
Co mogę powiedzieć? Kroi, kroi, myje naczynia, wyprowadza psa. „Po prostu działa”, co oznacza, że postępując zgodnie ze wskazówkami, otrzymasz pakiet roboczy bez ciągnięcia włosów lub zgrzytania zębami lub innych standardowych czynności przenoszenia.
Bernstein później zaktualizował to, gdzieś w dniu 1999-04-07 lub wcześniej, o pakiet „ptyget”, który ogłosił:
Stworzyłem nowy pseudo-tty alokator, ptyget. Wersja alfa jest na ftp://koobera.math.uic.edu/pub/software/ptyget-0.50.tar.gz
. Istnieje lista mailingowa ptyget; aby dołączyć, wyślij pustą wiadomość na adres
djb-ptyget-requ...@koobera.math.uic.edu
. Interfejs ptyget zaprojektowałem od zera. Jest o wiele bardziej modułowy niż pty; podstawowy interfejs pty został teraz podzielony na trzy części:
ptyget
: niewielki program niskiego poziomu - jedyny program setuid w pakiecie - który przydziela nowy pseudo-tty i przekazuje go do wybranego programu
ptyspawn
: inny mały program, który uruchamia proces potomny pod pseudo-tty, czekając na jego zakończenie i obserwując zatrzymania
ptyio
: inny, tylko nieco większy, program, który przenosi dane tam iz powrotem
Stary nóż Ginsu pty
jest teraz ortograficzny ptybandage
, co jest synonimem ptyget ptyio -t ptyspawn
; pty -d
, do dołączania programów sieciowych do pseudo-ttys, jest teraz pisownia ptyrun
, co jest synonimem ptyget ptyio ptyspawn
; i nobuf
jest synonimem
ptyget ptyio -r ptyspawn -23x
. Podzieliłem funkcje zarządzania sesjami na osobny pakiet.
Ten oddzielny pakiet był pakietem „sess”.
Nawiasem mówiąc, „ptyget” jest godnym uwagi przykładem bardzo wczesnej wersji i jednego z niewielu opublikowanych przypadków własnego, niepublikowanego systemu kompilacji „przerobić” Bersteina. dependon
jest wyraźnym prekursorem redo-ifchange
.
Stosowanie
ptybandage
ptybandage
to jest to, czego ludzie zwykle chcą podczas sesji logowania. Jego podstawowym zastosowaniem jest tworzenie programów, które są wrażliwe na to, czy ich standardowe dane wejściowe, wyjściowe lub błędy są podłączone do terminali, działają w ten sposób, nawet jeśli faktycznie znajdują się w potokach powłoki, lub ich standardowe deskryptory plików są przekierowywane do pliku.
Zajmuje polecenia do uruchomienia (który musi być właściwa komenda zewnętrzny, oczywiście) i uruchamia go w taki sposób, że uważa, że jego standardowe wejście, wyjście i błąd są dołączone do terminala, podłączenie tych aż do ptybandage
„s oryginalne standardowe wejście, wyjście i błąd.
Zajmuje się niuansami działania pod powłokami kontroli zadań, zapewniając, że znak STOP terminala nie tylko zatrzymuje się, ptybandage
ale także zatrzymuje działanie programu podłączonego do wewnętrznego terminalu.
ptyrun
ptyrun
to jest to, czego ludzie zwykle chcą na serwerach sieciowych TCP. Jego podstawowym zastosowaniem są środowiska zdalnego wykonywania, które same nie skonfigurowały terminali, uruchamiając programy, które nie działają zgodnie z oczekiwaniami, gdy nie ma terminala.
Nie oczekuje się, że będzie działał pod powłoką kontroli zadania, a jeśli uruchamiane polecenie otrzyma sygnał zatrzymania, zostanie po prostu ponownie uruchomiony.
Dostępne zestawy narzędzi
Dru Nelson publikuje zarówno wersję „pty” 4, jak i „ptyget”.
Paul Jarc publikuje poprawioną wersję ptyget, która próbuje poradzić sobie z ioctlami pseudoterminalnymi specyficznymi dla systemu operacyjnego w oryginale, których systemy operacyjne w rzeczywistości nie zapewniają.
Pakiet źródłowy nosh zawiera podobne do niego skrypty ptybandange
i ptyrun
skrypty, które używają execline
narzędzia Laurenta Bercot'a oraz własnych pseudoterminalnych poleceń zarządzania pakietem nosh. Od wersji 1.23 nosh są one dostępne w pakiecie z pakietem dodatków terminal-nosh. (Wcześniejsze wersje dostarczały je tylko osobom, które budowały ze źródła).
Kilka przykładów zastosowań
Jurjgen Oskam używa ptybandage
w systemie AIX do wprowadzania danych wejściowych z dokumentu tutaj do programu, który otwiera explicity, i odczytuje terminal sterujący w celu wyświetlenia hasła:
$ ptybandage dsmadmc << EOF> uit.txt
joskam
hasło
sesja zapytań
proces zapytania
porzucić
EOF
Andy Bradford używa ptyrun
na OpenBSD pod daemontools i ucspi-tcp, aby program bgplgsh
interaktywnego sterowania routerem był dostępny przez sieć, jednocześnie myśląc, że rozmawia z terminalem:
#! / bin / sh
exec 2> i 1
exec envuidgid rviews tcpserver -vDRHl0 0 23 ptyrun / usr / bin / bgplgsh
Dalsza lektura