ประวัติของชุดเครื่องมือ
คุณไม่ใช่คนแรกที่ต้องการเครื่องมือเช่นนี้ ผู้คนต้องการเครื่องมือเหล่านี้มา 30 ปีแล้ว และพวกมันมีมานานเกือบแล้วเช่นกัน
เครื่องมือที่เก่าแก่ที่สุดสำหรับสิ่งนี้คือแพ็คเกจ "pty" ของ Daniel J. Bernstein ซึ่งบรรยายโดย Rich Salz ในฐานะ "Ginsu knife" ซึ่ง Bernstein เขียนกลับไปเมื่อถึงปลายทศวรรษ 1990 เพื่อโกง nethack (sic!) แพคเกจ "pty" รุ่น 4 ได้รับการเผยแพร่ในปี 1992 ถึงcomp.sources.unix
(ฉบับที่ 25 ฉบับที่ 127 ถึง 135) มันยังหาตำแหน่งได้บนเวิลด์ไวด์เว็บ Paul Vixie อธิบายในเวลา:
ฉันจะว่าอย่างไรได้? มันหั่นเป็นสี่เหลี่ยมลูกเต๋าล้างจานเดินสุนัข มัน "ใช้งานได้" ซึ่งหมายความว่าหากคุณทำตามคำแนะนำคุณจะได้รับแพ็คเกจการทำงานโดยไม่ต้องถอนผมหรือขบเขี้ยวเคี้ยวฟันหรือทำกิจกรรมพอร์ตมาตรฐานอื่น ๆ
เบิร์นสไตน์ได้อัปเดตสิ่งนี้ในภายหลัง, เมื่ออยู่บนหรือก่อน 1999-04-07, ด้วยแพ็คเกจ "ptyget" ซึ่งเขาประกาศ:
ฉันได้รวบรวมตัวจัดสรรหลอกแบบใหม่ 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 เดียวในแพ็คเกจ - ที่จัดสรร pseudo-tty ใหม่และส่งไปยังโปรแกรมที่คุณเลือก
ptyspawn
: โปรแกรมขนาดเล็กอีกตัวที่ใช้กระบวนการเด็กภายใต้ระบบหลอกรอให้มันออกจากระบบและเฝ้าดูการหยุด
ptyio
: อีกโปรแกรมที่ใหญ่กว่าเพียงเล็กน้อยเท่านั้นที่เคลื่อนย้ายข้อมูลไปมา
pty
ตอนนี้มีด Ginsu เก่าสะกดptybandage
ซึ่งเป็นคำพ้องความหมายสำหรับptyget ptyio -t ptyspawn
; pty -d
สำหรับการแนบโปรแกรมเครือข่ายไปยัง pseudo-ttys จะถูกสะกด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 เผยแพร่ ptyget รุ่นคงที่ซึ่งพยายามจัดการกับอุปกรณ์หลอกระบบเทอร์มินัล ioctls ในระบบปฏิบัติการเฉพาะในต้นฉบับที่ระบบปฏิบัติการไม่ได้ให้บริการอีกต่อไป
ซอร์สแพ็กเกจ nosh มาพร้อมกับ workalike ptybandange
และptyrun
สคริปต์ซึ่งใช้execline
เครื่องมือของ Laurent Bercot และคำสั่งการจัดการ pseudo-terminal ของ nosh แพ็กเกจเอง ในฐานะของ nosh เวอร์ชัน 1.23 สิ่งเหล่านี้มีอยู่ในแพ็คเกจก่อนบรรจุในแพ็คเกจ nosh-terminal-extras (เวอร์ชันก่อนหน้านี้มอบให้เฉพาะกับคนที่สร้างขึ้นจากแหล่งที่มา)
ตัวอย่างบางส่วนใช้
Jurjgen Oskam ที่ใช้ptybandage
บน AIXเพื่อฟีดอินพุตจากเอกสารที่นี่ไปยังโปรแกรมที่ explicity เปิดขึ้นและอ่านเทอร์มินัลการควบคุมสำหรับพร้อมต์รหัสผ่าน:
$ ptybandage dsmadmc << EOF> uit.txt
joskam
รหัสผ่าน
เซสชั่นแบบสอบถาม
กระบวนการค้นหา
เลิก
EOF
Andy Bradford ใช้งานptyrun
บน OpenBSDภายใต้ daemontools และ ucspi-tcp เพื่อให้bgplgsh
โปรแกรมควบคุมเราเตอร์แบบโต้ตอบสามารถเข้าถึงได้ผ่านเครือข่ายในขณะที่คิดว่ามันกำลังพูดกับเทอร์มินัล:
#! / bin / ดวลจุดโทษ
exec 2> & 1
exec envuidgid rviews tcpserver -vDRHl0 0 23 ptyrun / usr / bin / bgplgsh
อ่านเพิ่มเติม
- Daniel J. Bernstein (1992-02-19) v25i127: ทั่วไปอินเตอร์เฟซกับอุปกรณ์หลอก comp.sources.unix 25 (127)
- Daniel J. Bernstein (1991-10-04) ความรู้เบื้องต้นเกี่ยวกับการจัดการเซสชั่น Bernstein บน TTYs JdeBP
- Paul Jarc ptyget ซอฟต์แวร์ของ Paul Jarc
- Jonathan de Boyne Pollard (2016) แดเนียลเจ Bernstein ของชุดเครื่องมือ โปรแกรม
- Dru Nelson drudru / pty4 GitHub
- Dru Nelson drudru / ptyget GitHub
- Laurent Bercot เอ็กซีคิวต์ ซอฟต์แวร์.
- Jonathan de Boyne Pollard (2016) โปรแกรมแดเนียลเจ Bernstein ของทั้งหมดในที่เดียว โปรแกรม
- Jonathan de Boyne Pollard (2014) แพคเกจ Nosh โปรแกรม
- Jonathan de Boyne Pollard (2012) แนะนำให้รู้จักกับ
redo
คำตอบที่ได้รับบ่อย
- Reyk Floeter
bgplgsh
. 8. หน้าคู่มือ OpenBSD