Sejarah toolets
Anda bukan orang pertama yang menginginkan alat seperti itu. Orang-orang telah menginginkan alat seperti itu selama 30 tahun. Dan mereka sudah ada hampir selama itu juga.
Alat paling awal untuk hal semacam ini adalah paket "pty" Daniel J. Bernstein, yang dijelaskan oleh Rich Salz sebagai "pisau Ginsu", yang ditulis Bernstein pada pergantian tahun 1990-an untuk menipu di nethack (sic!). Versi 4 dari paket "pty" diterbitkan pada tahun 1992 untuk comp.sources.unix
(volume 25 masalah 127 hingga 135). Itu masih dapat ditemukan di World Wide Web. Paul Vixie menggambarkannya pada saat itu:
Apa yang bisa kukatakan? Mengiris, memotong dadu, mencuci piring, menuntun anjing. Ini "hanya bekerja", artinya jika Anda mengikuti petunjuk ini Anda akan mendapatkan paket kerja tanpa menarik rambut atau kertakan gigi atau kegiatan porting standar lainnya.
Bernstein kemudian memperbarui ini, sekitar atau sebelum 1999-04-07, dengan paket "ptyget", yang ia umumkan:
Saya telah mengumpulkan pengalokasi semu-tty baru, ptyget. Versi alfa berada di ftp://koobera.math.uic.edu/pub/software/ptyget-0.50.tar.gz
. Ada milis ptyget; untuk bergabung, kirim pesan kosong ke
djb-ptyget-requ...@koobera.math.uic.edu
. Saya merancang antarmuka ptyget dari awal. Ini jauh lebih modular daripada pty; antarmuka pty dasar kini telah dibagi menjadi tiga bagian:
ptyget
: program tingkat rendah yang kecil - satu-satunya program setuid dalam paket - yang mengalokasikan pseudo-tty baru dan meneruskannya ke program pilihan Anda
ptyspawn
: program kecil lain yang menjalankan proses anak di bawah pseudo-tty, menunggu untuk keluar dan menonton berhenti
ptyio
: program lain, hanya sedikit lebih besar, yang memindahkan data bolak-balik
Pisau Ginsu tua pty
sekarang dieja ptybandage
, yang merupakan sinonim untuk ptyget ptyio -t ptyspawn
; pty -d
, untuk melampirkan program jaringan ke pseudo-ttys, sekarang dieja ptyrun
, yang merupakan sinonim untuk ptyget ptyio ptyspawn
; dan nobuf
merupakan sinonim untuk
ptyget ptyio -r ptyspawn -23x
. Saya telah membagi fitur manajemen sesi menjadi paket terpisah.
Paket terpisah itu adalah paket "sess".
"ptyget", secara kebetulan, terkenal karena mencontohkan versi yang sangat awal, dan salah satu dari sedikit contoh yang diterbitkan, sistem build "redo" buatan Berstein yang tidak pernah dipublikasikan. dependon
adalah prekursor yang jelas untuk redo-ifchange
.
Pemakaian
ptybandage
ptybandage
adalah apa yang biasanya orang inginkan dalam sesi login. Kasus penggunaan utamanya adalah membuat program yang peka terhadap apakah input, output, atau kesalahan standar mereka terhubung ke terminal yang beroperasi seperti itu meskipun mereka sebenarnya dalam jaringan pipa shell, atau deskriptor file standarnya dialihkan ke file.
Dibutuhkan perintah untuk menjalankan (yang telah menjadi perintah eksternal yang tepat, tentu saja) dan berjalan itu sedemikian rupa sehingga berpikir bahwa standar input, output, dan kesalahan yang melekat pada terminal, menghubungkan mereka melalui ptybandage
's input standar asli, keluaran, dan kesalahan.
Ini berurusan dengan nuansa berjalan di bawah cangkang kontrol pekerjaan, memastikan bahwa karakter STOP terminal tidak hanya berhenti ptybandage
tetapi juga menghentikan program yang berjalan terpasang ke terminal bagian dalam.
ptyrun
ptyrun
adalah apa yang biasanya orang inginkan di server jaringan TCP. Kasus penggunaan utamanya adalah lingkungan eksekusi jarak jauh yang belum mengatur terminal sendiri, menjalankan program yang tidak beroperasi seperti yang diinginkan ketika tidak ada terminal.
Itu tidak berharap untuk berjalan di bawah shell kontrol pekerjaan, dan jika perintah yang dijalankan menerima sinyal berhenti itu hanya restart.
Toolset yang tersedia
Dru Nelson menerbitkan "pty" versi 4 dan "ptyget".
Paul Jarc menerbitkan versi ptyget yang tetap, yang mencoba untuk berurusan dengan perangkat pseudo-terminal khusus sistem operasi ioctls di sistem asli yang sebenarnya tidak lagi disediakan oleh sistem operasi.
Paket source nosh dilengkapi dengan workalike ptybandange
dan ptyrun
skrip, yang menggunakan execline
alat Laurent Bercot dan perintah pseudo-terminal manajemen paket nosh itu sendiri. Pada nosh versi 1.23 ini tersedia pra-paket dalam paket nosh-terminal-ekstra. (Versi sebelumnya hanya menyediakannya untuk orang yang membangun dari sumber.)
Beberapa contoh menggunakan
Jurjgen Oskam menggunakan ptybandage
pada AIX untuk memasukkan input dari dokumen di sini ke program yang terbuka dan membaca terminal pengendali untuk prompt kata sandi:
$ ptybandage dsmadmc << EOF> uit.txt
joskam
kata sandi
sesi permintaan
proses permintaan
berhenti
EOF
Andy Bradford menggunakan ptyrun
OpenBSD di bawah daemontools dan ucspi-tcp untuk membuat bgplgsh
program kontrol router interaktif dapat diakses melalui jaringan sementara membuatnya berpikir bahwa itu berbicara ke terminal:
#! / bin / sh
exec 2> & 1
rv exec envuidgid tcpserver -vDRHl0 0 23 ptyrun / usr / bin / bgplgsh
Bacaan lebih lanjut