Lịch sử của bộ công cụ
Bạn không phải là người đầu tiên muốn có một công cụ như vậy. Mọi người đã muốn các công cụ như vậy trong 30 năm. Và chúng cũng đã tồn tại gần như vậy.
Công cụ đầu tiên cho loại điều này là gói "pty" của Daniel J. Bernstein, được Rich Salz mô tả là "con dao Ginsu", mà Bernstein đã viết lại vào đầu những năm 1990 để lừa đảo nethack (sic!). Phiên bản 4 của gói "pty" được xuất bản năm 1992 tới comp.sources.unix
(tập 25 số 127 đến 135). Nó vẫn có thể định vị trên World Wide Web. Paul Vixie đã mô tả nó vào thời điểm đó:
Tôi có thể nói gì? Nó cắt lát, nó thái hạt lựu, rửa chén, nó dắt chó đi dạo. Nó "chỉ hoạt động", có nghĩa là nếu bạn làm theo chỉ dẫn, bạn sẽ nhận được một gói làm việc mà không có bất kỳ nhổ tóc hoặc nghiến răng hoặc các hoạt động chuyển tiêu chuẩn khác.
Bernstein sau đó đã cập nhật điều này, đôi khi vào hoặc trước 1999-04-07, với gói "ptyget", mà ông đã thông báo:
Tôi đã kết hợp một công cụ phân bổ giả mới, ptyget. Một phiên bản alpha là tại ftp://koobera.math.uic.edu/pub/software/ptyget-0.50.tar.gz
. Có một danh sách gửi thư ptyget; để tham gia, gửi một tin nhắn trống đến
djb-ptyget-requ...@koobera.math.uic.edu
. Tôi đã thiết kế giao diện của ptyget từ đầu. Nó nhiều mô-đun hơn pty; Giao diện pty cơ bản hiện đã được chia thành ba phần:
ptyget
: một chương trình cấp thấp, nhỏ - chương trình setuid duy nhất trong gói - phân bổ một giả mới và chuyển nó đến chương trình bạn chọn
ptyspawn
: một chương trình nhỏ khác chạy một tiến trình con theo giả, chờ nó thoát ra và xem các điểm dừng
ptyio
: chương trình khác, chỉ lớn hơn một chút, di chuyển dữ liệu qua lại
Con dao Ginsu cũ pty
hiện được đánh vần ptybandage
, đó là một từ đồng nghĩa với ptyget ptyio -t ptyspawn
; pty -d
, để đính kèm các chương trình mạng vào giả, hiện được đánh vần ptyrun
, đó là một từ đồng nghĩa với ptyget ptyio ptyspawn
; và nobuf
là một từ đồng nghĩa cho
ptyget ptyio -r ptyspawn -23x
. Tôi đã tách các tính năng quản lý phiên thành một gói riêng biệt.
Gói riêng đó là gói "sess".
"ptyget", tình cờ, đáng chú ý là để minh họa một phiên bản rất sớm của, và một trong số ít các phiên bản được xuất bản của, hệ thống xây dựng "làm lại" chưa từng được công bố của Berstein. dependon
là một tiền thân rõ ràng để redo-ifchange
.
Sử dụng
ptybandage
ptybandage
là những gì mọi người thường muốn trong một phiên đăng nhập. Trường hợp sử dụng chính của nó là làm cho các chương trình nhạy cảm với việc liệu đầu vào, đầu ra hoặc lỗi tiêu chuẩn của chúng được kết nối với các thiết bị đầu cuối hoạt động theo cách đó ngay cả khi chúng thực sự nằm trong các đường ống vỏ hoặc mô tả tệp tiêu chuẩn của chúng được chuyển hướng đến tệp.
Phải mất một lệnh để chạy (mà phải là một lệnh hỗ trợ toàn diện, tất nhiên) và chạy nó trong một cách mà nó nghĩ rằng nó tiêu chuẩn đầu vào, đầu ra, và lỗi được gắn vào một thiết bị đầu cuối, kết nối những thông qua để ptybandage
's đầu vào tiêu chuẩn ban đầu, đầu ra, và lỗi.
Nó liên quan đến các sắc thái của việc chạy trong các vỏ điều khiển công việc, đảm bảo rằng một ký tự STOP đầu cuối không chỉ dừng lại ptybandage
mà còn dừng chương trình chạy được gắn vào thiết bị đầu cuối bên trong.
ptyrun
ptyrun
là những gì mọi người thường muốn trong các máy chủ mạng TCP. Trường hợp sử dụng chính của nó là các môi trường thực thi từ xa không tự thiết lập các thiết bị đầu cuối, chạy các chương trình không hoạt động như mong muốn khi không có thiết bị đầu cuối.
Nó không mong đợi được chạy dưới lớp vỏ điều khiển công việc và nếu lệnh đang chạy nhận được tín hiệu dừng thì đơn giản là nó được khởi động lại.
Bộ công cụ có sẵn
Dru Nelson xuất bản cả "pty" phiên bản 4 và "ptyget".
Paul Jarc xuất bản một phiên bản cố định của ptyget, cố gắng đối phó với ioctls thiết bị đầu cuối dành riêng cho hệ điều hành trong bản gốc mà các hệ điều hành thực sự không còn cung cấp.
Gói nguồn nosh đi kèm với các tập lệnh ptybandange
và ptyrun
tập lệnh tương tự , sử dụng execline
công cụ của Laurent Bercot và các lệnh quản lý thiết bị đầu cuối giả của gói nosh. Kể từ phiên bản nosh 1.23, chúng được đóng gói sẵn trong gói nosh-terminal-extend. (Các phiên bản trước đó chỉ cung cấp chúng cho những người xây dựng từ nguồn.)
Một vài ví dụ sử dụng
Jurjgen Oskam sử dụng ptybandage
trên AIX để cung cấp đầu vào từ một tài liệu ở đây cho một chương trình mở ra và đọc thiết bị đầu cuối kiểm soát của nó cho một dấu nhắc mật khẩu:
$ ptybandage dsmadmc << EOF> uit.txt
joskam
mật khẩu
phiên truy vấn
quá trình truy vấn
bỏ
EOF
Andy Bradford sử dụng ptyrun
trên OpenBSD dưới daemontools và ucspi-tcp để làm cho bgplgsh
chương trình điều khiển bộ định tuyến tương tác có thể truy cập qua mạng trong khi làm cho nó nghĩ rằng nó đang nói chuyện với một thiết bị đầu cuối:
#! / thùng / sh
thực hiện 2> & 1
exec envuidgid rview tcpserver -vDRHl0 0 23 ptyrun / usr / bin / bgplgsh
đọc thêm