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 ptysekarang 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 nobufmerupakan 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. dependonadalah prekursor yang jelas untuk redo-ifchange.
Pemakaian
ptybandage
ptybandageadalah 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 ptybandagetetapi juga menghentikan program yang berjalan terpasang ke terminal bagian dalam.
ptyrun
ptyrunadalah 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 ptybandangedan ptyrunskrip, yang menggunakan execlinealat 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 ptybandagepada 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 ptyrunOpenBSD di bawah daemontools dan ucspi-tcp untuk membuat bgplgshprogram 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