- เครื่องมือ 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 จากเครื่องนั้น จะทำงานได้เร็วกว่า
การพัฒนาและประวัติ
- เป็นเครื่องมือที่ Bearstech ใช้งานภายในมาตั้งแต่ปี 2008
- ในช่วงแรกเป็นเพียงเชลล์สคริปต์ไม่กี่บรรทัด และปัจจุบันทำงานได้เสถียรแม้ในคลัสเตอร์ที่มีเซิร์ฟเวอร์มากกว่า 500 เครื่อง
- เชื่อมต่อทำงานร่วมกับระบบจัดการคลาวด์ เพื่อสร้างรายการโฮสต์ที่พร้อมรันได้จากคำอธิบายโฮสต์แบบง่าย
ข้อจำกัด
- stdout และ stderr ของเซิร์ฟเวอร์ปลายทางจะไม่ถูกแยกออกจากกัน แต่ถูกรวมเป็นสตรีมเดียวในการแสดงผล
- ไม่สามารถดึงสถานะการจบการทำงาน (exit status) ของคำสั่งที่รันบนเซิร์ฟเวอร์ปลายทางได้
2 ความคิดเห็น
ชื่อน่าสงสัย!
เห็นด้วยสุด ๆ 🤣