การย้ายซ็อกเก็ตโดเมนยูนิกซ์เปิดใช้งาน socat เพื่อตรวจสอบปริมาณข้อมูลอย่างไร


12

socat สามารถใช้เพื่อตรวจสอบปริมาณการใช้งานผ่านซ็อกเก็ตโดเมน Unix:

sudo mv /path/to/sock /path/to/sock.original
sudo socat -t100 -x -v UNIX-LISTEN:/path/to/sock,mode=777,reuseaddr,fork UNIX-CONNECT:/path/to/sock.original

ฉันไม่ค่อยเข้าใจวิธีการทำงานของกลไกนี้หวังว่าบางคนสามารถอธิบายได้เล็กน้อย โดยเฉพาะอย่างยิ่งการย้ายไฟล์ซ็อกเก็ตทำงานอย่างไรหากกระบวนการกำลังฟังอยู่แล้ว? นอกจากนี้หลังจากที่ย้าย: ค่าlsof /path/to/sockมิได้/path/to/sock.originalผลลัพธ์ใด ๆ

คำตอบ:


11

/path/to/sockคำสั่งดังกล่าวจะต้องมีการทำงานเมื่อเซิร์ฟเวอร์ที่คุณต้องการตรวจสอบอยู่ในขณะนี้ฟังบน จากนั้นหากคุณเปลี่ยนชื่อ/path/to/sockเซิร์ฟเวอร์จะไม่ได้รับผลกระทบ

socatคำสั่งแทรกคน-in-the-กลาง มันฟัง/path/to/socksและส่งต่อการรับส่งข้อมูลทั้งหมดโดยลูกค้าไปยัง/path/to/socks.original(และบันทึกไว้ในกระบวนการด้วย-v)

ใช้งานได้กับซ็อกเก็ตประเภทสตรีม (ใช้UNIX-RECVFROM/ UNIX-RECVสำหรับดาตาแกรมซ็อกเก็ต) และเฉพาะเมื่อไคลเอนต์ใช้read/write/send/recvกับซ็อกเก็ตเหล่านั้นเท่านั้นไม่ใช่sendmsg()กับข้อมูลเสริมและสิ่งแฟนซีอื่น ๆ

lsofจะรายงานขั้นตอนการฟังเท่านั้น ( socatและเซิร์ฟเวอร์สำหรับซ็อกเก็ตการฟังและการยอมรับ) โดยทั่วไปแล้วจะไม่สามารถเชื่อมต่อซ็อกเก็ตที่เชื่อมต่อบนไคลเอนต์กับเส้นทางของซ็อกเก็ตได้

ถ้าคุณทำอย่างนั้นก่อนที่จะเริ่มต้นเซิร์ฟเวอร์แล้วว่าจะไม่ทำงานเป็นเซิร์ฟเวอร์จะพยายามที่จะฟังบน/path/to/socksและล้มเหลวเป็นsocatอยู่แล้วฟังว่า หรือคุณต้องบอกเซิร์ฟเวอร์ให้ฟัง/path/to/sock.originalแทน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.