วิธี UCSPI-TCP
มีชุดเครื่องมืออื่นที่ไม่ใช่ netcat นี่คือวิธีการใช้งานไม่กี่คน พวกเขาทั้งหมดเข้าใจว่ามีserviceสคริปต์ที่ทำงานของคุณfuncไม่ว่ามันจะเป็นอะไร:
#! / bin / ดวลจุดโทษ
ในขณะที่อ่าน -r MESSAGE
ทำ
echo 1> & 2 "$ {TCPREMOTEIP}" "$ {TCPREMOTEPORT}" rx "$ {MESSAGE}"
func
เสร็จแล้ว
TCPREMOTEIPและTCPREMOTEPORTสภาพแวดล้อมตัวแปรจะถูกกำหนดโดยโปรโตคอล TCP-UCSPI
สคริปต์ถูกวางไข่เป็นกระบวนการเดี่ยวต่อการเชื่อมต่อ TCP โดยใช้ชุดเครื่องมือต่างๆ ในสิ่งต่อไปนี้เครื่องมือจะแสดงตามที่ใช้ในสคริปต์สั้น สคริปต์ชื่อตามอัตภาพrunนั้นเป็นวิธีที่จะรันภายใต้ผู้จัดการบริการ daemontools-family แน่นอนพวกเขาสามารถเรียกใช้โดยตรง
Bernstein ucspi-tcp
กับแดเนียลเจ Bernstein ของ ucspi-TCP, tcpserverspawns serviceสคริปต์:
#! / bin / sh -e
exec tcpserver -v -P -R -H -l 0 0.0.0.0 7777 ./service
มี Bernstein ucspi-tcp เวอร์ชั่นปรับปรุงที่รองรับ IPv6 ด้วย Erwin Hoffman tcpserverพยายามจัดการทั้ง IPv4 และ IPv6 ในหนึ่งเดียว (หากระบบปฏิบัติการรองรับสิ่งนี้ไม่กี่อย่าง) และวางserviceสคริปต์:
#! / bin / sh -e
exec tcpserver -v -P -R -H -l 0 :: 0 7777 ./service
Bercot s6-networking, s6 และดำเนินการ
ด้วยเครือข่าย s6 ของ Laurent Bercot s6-tcpserver4และs6-tcpserver6จัดการ IPv4 และ IPv6 แยกกันและวางserviceสคริปต์:
#! / คำสั่ง / execlineb
s6-tcpserver4 -v 0.0.0.0 7777
./บริการ
#! / คำสั่ง / execlineb
s6-tcpserver6 -v :: 0 7777
./บริการ
หนึ่งสามารถสร้างขึ้นเซิร์ฟเวอร์ที่ซับซ้อนมากขึ้นโดย interposing เครื่องมือเช่นs6-tcpserver-accessและในห่วงโซ่ทันทีก่อนs6-applyuidgid./service
เครื่องมือ nosh UCSPI
ด้วยชุดเครื่องมือ nosh tcp-socket-listenฟังบนซ็อกเก็ต TCP จัดการ IPv4 และ IPv6 อีกครั้งโดยบังเอิญหากระบบปฏิบัติการรองรับการทำเช่นนั้นและเชื่อมโยงtcp-socket-acceptกับserviceสคริปต์ที่วางไข่:
#! / bin / Nosh
tcp-socket-Listen --combine4and6 :: 7777
tcp-socket-accept --verbose - local ชื่อ 0
./บริการ
หรือกระบวนการหนึ่งทำงานแยกกันสองกระบวนการบนระบบปฏิบัติการเช่น OpenBSD:
#! / bin / Nosh
tcp-socket-Listen 0.0.0.0 7777
tcp-socket-accept --verbose - local ชื่อ 0
./บริการ
#! / bin / Nosh
tcp-socket-Listen :: 7777
tcp-socket-accept --verbose - local ชื่อ ::
./บริการ
หนึ่งสามารถสร้างเซิร์ฟเวอร์ที่ซับซ้อนมากขึ้นโดยการแทรกเครื่องมือเช่นucspi-socket-rules-checkและsetuidgidในห่วงโซ่
#! / bin / Nosh
tcp-socket-Listen --combine4and6 :: 7777
setuidgid ผู้ใช้ที่ไม่มีสิทธิ์
tcp-socket-accept --verbose - local ชื่อ 0
ucspi-socket-rules-check --verbose
./บริการ
Pips ipsvd
ด้วย ipsvd ของ Gerrit Pape tcpsvdวางไข่serviceสคริปต์:
#! / bin / sh -e
exec tcpsvd -v 0.0.0.0 7777 ./service
UCSPI-UDP
serviceสคริปต์ทั่วไปสามารถจัดการได้เมื่ออินพุตมาตรฐานคือซ็อกเก็ตสตรีม แต่คุณไม่ได้ระบุ TCP อย่างชัดเจน
แม้ว่าบางชุดของเครื่องมือดังกล่าวสามารถใช้เพื่อสร้างเซิร์ฟเวอร์ UDP ในลักษณะเดียวกันกับวิธีที่พวกเขาสามารถใช้เพื่อสร้างเซิร์ฟเวอร์ TCP (cf udp-socket-listenใน nosh) แต่มันก็ยากที่จะสร้างโปรแกรมบริการจริงด้วยสคริปต์เชลล์เนื่องจากบิวด์อินของเชลล์ไม่ได้ จำเป็นต้องรับมือได้ดีเมื่ออินพุตมาตรฐานคือซ็อกเก็ตดาตาแกรม
อ่านเพิ่มเติม
- มาตรการ:
- toolsets:
- Daniel J. Bernstein ucspi-TCP cr.yp.to.
- S6 เครือข่าย Laurent Bercot skarnet.org
- S6 Laurent Bercot skarnet.org
- Jonathan de Boyne Pollard (2016) ไม่มีอะไร โปรแกรม
- ipsvd Gerrit Pape smarden.org
- คู่มืออ้างอิง: