วิธี 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, tcpserver
spawns 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
- คู่มืออ้างอิง: