5 คะแนน โดย xguru 2025-04-22 | 2 ความคิดเห็น | แชร์ทาง WhatsApp
  • เครื่องมือ CLI ที่สามารถรันคำสั่งพร้อมกันบนหลายเซิร์ฟเวอร์ผ่านเซสชัน Parallel SSH
  • รองรับตั้งแต่วิธีใช้งานแบบง่ายไปจนถึงการควบคุมอินพุต/เอาต์พุตขั้นสูง จึงมีประโยชน์สำหรับการจัดการคลัสเตอร์เซิร์ฟเวอร์

ความสามารถพื้นฐาน

  • รันคำสั่งบนหลายโฮสต์พร้อมกัน และแสดงชื่อโฮสต์เป็นคำนำหน้าของผลลัพธ์
    • ตัวอย่าง: pussh -h host1,host2 uname -a
  • สามารถระบุรายการโฮสต์จากไฟล์หรือ standard input ได้
    • ตัวอย่าง: pussh -f servers uname -a หรือ fetch-servers | pussh -f - uname -a
  • สามารถส่งผลลัพธ์เข้า pipeline เพื่อจัดเรียงหรือกรองได้
    • ตัวอย่าง: เรียงตามปริมาณการใช้ดิสก์ → pussh -f servers df -h / | grep /dev | sort -rn -k5
  • สามารถบันทึกผลลัพธ์ของแต่ละโฮสต์ลงไฟล์แยกกันได้ (%h คือช่องสำหรับชื่อโฮสต์)
    • ตัวอย่าง: pussh -f servers -o %h-hw.txt lshw
  • สามารถนำผลลัพธ์จาก SSH ไป pipe ต่อให้คำสั่งอื่นได้
    • ตัวอย่าง: pussh -f servers -o '|grep feature' command > output

ความสามารถด้านการควบคุมอินพุต

  • ระหว่างรันคำสั่ง สามารถป้อนอินพุตจากไฟล์หรือจากผลลัพธ์ของคำสั่งได้
    • ตัวอย่าง: pussh -f servers -i file command
    • ตัวอย่าง: ไฟล์อินพุตแยกตามโฮสต์ → pussh -f servers -i %h.data command
    • ตัวอย่าง: อินพุตแบบไดนามิก → pussh -f servers -i 'get-data %h|' command
  • -i และ -o สามารถใช้ร่วมกันได้อย่างอิสระ

ความสามารถด้านการดีพลอยและการรัน

  • สามารถส่งคำสั่งหรือสคริปต์ไปรันบนเครื่องปลายทางจากระยะไกลได้
    • ตัวอย่าง: pussh -f servers -u my-deploy.sh args ...
    • อย่างไรก็ตาม ไฟล์ที่รันได้ต้องเป็นแบบ self-contained หรือเข้ากันได้กับสภาพแวดล้อมของเซิร์ฟเวอร์เป้าหมาย

เคล็ดลับการปรับแต่งประสิทธิภาพ

  • ความเร็วในการสร้างการเชื่อมต่อ SSH มีผลอย่างมากต่อเวลารันทั้งหมด
  • หากเกินขีดจำกัดความเร็วในการประมวลผลของ SSH agent อาจเกิดการยืนยันตัวตนล้มเหลวหรือข้อผิดพลาดในการเชื่อมต่อได้
  • คำแนะนำ: ควรกำหนดอัตราการรัน (rate) ระหว่างใช้งาน (เช่น alias pussh='pussh -r 50')
  • เนื่องจาก network latency มีผลมาก หาก ssh เข้าเครื่องใน remote LAN ก่อน แล้วค่อยรัน pussh จากเครื่องนั้น จะทำงานได้เร็วกว่า
    • ตัวอย่างเบนช์มาร์ก (อ้างอิงจาก Gigabit LAN):
      $ time pussh -f servers -r 100 date  
      Total: 201 host(s), 4 second(s)  
      
      real    0m4.069s  
      user    0m7.132s  
      sys     0m3.140s  
      

การพัฒนาและประวัติ

  • เป็นเครื่องมือที่ Bearstech ใช้งานภายในมาตั้งแต่ปี 2008
  • ในช่วงแรกเป็นเพียงเชลล์สคริปต์ไม่กี่บรรทัด และปัจจุบันทำงานได้เสถียรแม้ในคลัสเตอร์ที่มีเซิร์ฟเวอร์มากกว่า 500 เครื่อง
  • เชื่อมต่อทำงานร่วมกับระบบจัดการคลาวด์ เพื่อสร้างรายการโฮสต์ที่พร้อมรันได้จากคำอธิบายโฮสต์แบบง่าย

ข้อจำกัด

  • stdout และ stderr ของเซิร์ฟเวอร์ปลายทางจะไม่ถูกแยกออกจากกัน แต่ถูกรวมเป็นสตรีมเดียวในการแสดงผล
  • ไม่สามารถดึงสถานะการจบการทำงาน (exit status) ของคำสั่งที่รันบนเซิร์ฟเวอร์ปลายทางได้

2 ความคิดเห็น

 
ahwjdekf 2025-04-24

ชื่อน่าสงสัย!

 
nemorize 2025-04-25

เห็นด้วยสุด ๆ 🤣