วิธีการตั้งค่าซอฟต์แวร์ปิดระบบอัตโนมัติร่วมกับ UPS และ NUT

การปรับปรุงครั้งล่าสุด: 15/02/2026
ผู้แต่ง: ไอแซก
  • โปรแกรม Network UPS Tools ช่วยให้คุณจัดการและตรวจสอบระบบ UPS ตั้งแต่หนึ่งระบบขึ้นไป โดยรวมศูนย์การแจ้งเตือนและการดำเนินการปิดระบบอัตโนมัติ
  • การใช้ Raspberry Pi เป็นตัวควบคุมหลักของ NUT ช่วยให้ประหยัดพลังงาน มีความยืดหยุ่นสูง และใช้งานร่วมกับ UPS ได้หลายรุ่น
  • การทำงานอัตโนมัติผ่านไฟล์การกำหนดค่าและสคริปต์ upssched-cmd เป็นกุญแจสำคัญในการประสานงานการปิดระบบและการแจ้งเตือนอย่างเป็นระเบียบ
  • การกำหนดค่าความปลอดภัย การบันทึกข้อมูล และการทดสอบที่เหมาะสม จะช่วยลดความเสี่ยงเมื่อเปิดเผย NUTs บนเครือข่าย และเพิ่มความน่าเชื่อถือของระบบ

ตั้งค่าซอฟต์แวร์ปิดเครื่อง UPS อัตโนมัติ

การมี UPS แต่ไม่ได้ตั้งค่าซอฟต์แวร์ปิดเครื่องอัตโนมัติ อย่างถูกต้อง ก็เหมือนกับการไม่ได้คาดเข็มขัดนิรภัย: ดูเหมือนจะปกป้องคุณได้ แต่ในยามวิกฤต มันจะไม่ทำงาน หากคุณอ่านมาถึงตรงนี้แล้ว คุณคงกำลังมองหาวิธีที่เชื่อถือได้เพื่อให้แน่ใจว่าเซิร์ฟเวอร์ ห้องปฏิบัติการเสมือน หรือคอมพิวเตอร์ที่บ้านของคุณจะปิดเครื่องอย่างปลอดภัยเมื่อไฟฟ้าดับ

ในบทความนี้ เราจะมาดูวิธีการตั้งค่าระบบปิดเครื่องอัตโนมัติด้วย UPS โดยใช้เครื่องมือซอฟต์แวร์ โดยเน้นที่ Network UPS Tools (NUT) บน Linux/Raspbian เป็นพิเศษ แต่ก็จะกล่าวถึงทางเลือกอื่นๆ และตัวอย่างในโลกแห่งความเป็นจริง เช่น APC Smart-UPS ทั่วไป ซึ่งปัจจุบันไม่มีการสนับสนุนอย่างเป็นทางการสำหรับโซลูชัน VMware บางอย่างแล้ว เป้าหมายคือ เมื่ออ่านบทความนี้จบ คุณจะเข้าใจตัวเลือกต่างๆ วิธีการตั้งค่าทีละขั้นตอน และประเด็นสำคัญที่ควรพิจารณา เพื่อที่คุณจะไม่ตกอยู่ในสถานการณ์ที่ไม่คาดคิดเมื่อไฟฟ้าดับ

ไฟดับส่งผลต่อพีซีของคุณอย่างไรและจะป้องกันพีซีได้อย่างไร
บทความที่เกี่ยวข้อง:
ไฟดับส่งผลต่อพีซีของคุณอย่างไรและวิธีป้องกันที่มีประสิทธิภาพ

เหตุใดคุณจึงต้องการระบบปิดเครื่องอัตโนมัติสำหรับ UPS ของคุณ

ข้อดีของการปิดระบบ UPS อัตโนมัติ

ผู้ใช้หลายคนซื้อ UPS โดยคิดเพียงแค่ว่าจะได้ไฟสำรองเพียงไม่กี่นาที แต่ลืมไปว่าคุณค่าที่แท้จริงของมันอยู่ที่การปิดเครื่องอย่างปลอดภัยโดยอัตโนมัติเมื่อแบตเตอรี่เริ่มเหลือน้อย หากไม่มีขั้นตอนนี้ เครื่องเสมือนหรือเซิร์ฟเวอร์ของคุณอาจปิดตัวลงอย่างไม่คาดคิด ซึ่งอาจทำให้ข้อมูลเสียหายได้

ในสภาพแวดล้อมห้องปฏิบัติการที่มีโฮสต์ ESXi คลัสเตอร์ หรือระบบที่มี VM หลายตัวสถานการณ์ที่เหมาะสมที่สุดคือ UPS ส่งสัญญาณว่ากำลังใช้พลังงานจากแบตเตอรี่ และซอฟต์แวร์ประสานงานการปิดระบบอย่างเป็นระเบียบ โดยเริ่มจากเครื่องเสมือนที่สำคัญก่อน จากนั้นจึงเป็นบริการรอง และสุดท้ายคือโฮสต์เอง เมื่อผู้ผลิตหยุดให้การสนับสนุนซอฟต์แวร์ของตนเอง (เช่นเดียวกับที่เกิดขึ้นกับโซลูชันการปิดระบบเครือข่ายบางตัวสำหรับ VMware) จำเป็นต้องหาทางเลือกอื่น

Network UPS Tools (NUT) คืออะไร และทำไมจึงมีการใช้งานอย่างแพร่หลาย?

เครื่องมือ UPS เครือข่าย (NUT)

NUT เป็นชุดเครื่องมือโอเพนซอร์สที่ออกแบบมาเพื่อจัดการระบบจ่ายไฟสำรอง (UPS) บนระบบ Unix และ Linux ประกอบด้วยไดรเวอร์ โปรแกรมทำงานเบื้องหลัง และยูทิลิตี้ตรวจสอบต่างๆ ที่ช่วยให้คุณอ่านสถานะของ UPS ตอบสนองต่อเหตุการณ์ และจัดการการปิดระบบอัตโนมัติได้

จุดเด่นที่สำคัญที่สุดอย่างหนึ่งคือโมเดลแบบมาสเตอร์/สเลฟ : อุปกรณ์หนึ่งตัวทำหน้าที่เป็นเซิร์ฟเวอร์ NUT โดยเชื่อมต่อกับ UPS ทางกายภาพ (โดยปกติผ่าน USB หรือพอร์ตอนุกรม) และมีอุปกรณ์ไคลเอ็นต์หนึ่งตัวหรือมากกว่านั้นเชื่อมต่อผ่านเครือข่ายเพื่อตรวจสอบสถานะและตัดสินใจปิดระบบ ตัวอย่างเช่น คุณสามารถใช้ Raspberry Pi ในการจัดการ UPS และมีเซิร์ฟเวอร์ Windows หลายตัวเชื่อมต่อเป็นสเลฟได้

นอกจากนี้ NUT ยังได้รับการยกย่องอย่างสูงในด้านความเข้ากันได้กับฮาร์ดแวร์ที่หลากหลายรองรับผู้ผลิตและรุ่นต่างๆ มากมาย เช่น APC, Salicru, Eaton, CyberPower และอื่นๆ อีกมากมาย อย่างไรก็ตาม ควรตรวจสอบรายการความเข้ากันได้ของฮาร์ดแวร์บนเว็บไซต์อย่างเป็นทางการก่อนเริ่มใช้งาน เพื่อยืนยันว่ารุ่นของคุณได้รับการสนับสนุนหรือไม่

อีกแง่มุมที่น่าสนใจคือ เนื่องจากเป็นซอฟต์แวร์ฟรีภายใต้ใบอนุญาต GPL จึงได้รับการดูแลรักษาอย่างต่อเนื่อง มีการปรับปรุง แก้ไขข้อบกพร่อง และเพิ่มไดรเวอร์ใหม่ๆ อยู่บ่อยครั้ง ซึ่งเป็นประโยชน์อย่างยิ่งเมื่อเทียบกับโซลูชันที่เป็นกรรมสิทธิ์ซึ่งผู้ผลิตอาจทิ้งไปในชั่วข้ามคืน

ข้อดีและข้อเสียของการใช้ NUT เป็นซอฟต์แวร์ปิดระบบอัตโนมัติ

ก่อนที่จะลงลึกไปถึงคำสั่งและไฟล์การกำหนดค่า ควรพิจารณาข้อดีและข้อเสียของ NUT ให้ชัดเจน ก่อน เพื่อประเมินว่าเหมาะสมกับสถานการณ์ของคุณหรือไม่ หรือควรพิจารณาทางเลือกอื่นจากบริษัทอื่นแทน

ข้อดีหลักของ NUT

จุดแข็งที่สำคัญที่สุดอย่างหนึ่งของ NUT คือการตรวจสอบระยะไกลแบบรวมศูนย์และความสามารถในการเสริมด้วยนโยบายพลังงานขั้นสูงจากเซิร์ฟเวอร์เพียงเครื่องเดียว คุณสามารถดูสถานะของหน่วย UPS หนึ่งหน่วยหรือมากกว่านั้นได้ เช่น ระดับการชาร์จ เปอร์เซ็นต์แบตเตอรี่ เวลาที่เหลือโดยประมาณ เหตุการณ์ล่าสุด และอื่นๆ ซึ่งช่วยลดความซับซ้อนในการตรวจสอบในเครือข่ายที่มีอุปกรณ์หลายเครื่องได้อย่างมาก

นอกจากนี้ยังโดดเด่นในด้านความสามารถในการจัดการระบบ UPS หลายระบบจากการติดตั้งเดียวกัน คุณสามารถเริ่มต้นด้วย UPS สำหรับบ้านเพียงเครื่องเดียวและขยายไปสู่การกำหนดค่าที่ซับซ้อนมากขึ้นด้วยอุปกรณ์หลายเครื่องในแร็คหรือห้องต่างๆ โดยยังคงรักษาตรรกะการแจ้งเตือนและการปิดระบบอัตโนมัติแบบเดียวกัน

ข้อดีอีกประการหนึ่งคือความสามารถในการทำงานอัตโนมัติ NUT ช่วยให้คุณกำหนดสิ่งที่ควรเกิดขึ้นในแต่ละเหตุการณ์ได้ เช่น เมื่อไฟดับ เมื่อแบตเตอรี่เหลือน้อย เมื่อการสื่อสารกับ UPS ขาดหาย เป็นต้น โดยปกติแล้วจะเริ่มการปิดเซิร์ฟเวอร์อย่างเป็นระเบียบ แต่คุณยังสามารถเรียกใช้สคริปต์แบบกำหนดเอง ปิดบริการเฉพาะ หรือส่งการแจ้งเตือนก่อนการปิดระบบโดยสมบูรณ์ได้อีกด้วย

ในส่วนของการแจ้งเตือน NUT มีแพลตฟอร์มที่ยืดหยุ่นมาก ด้วยสคริปต์ที่เหมาะสม คุณสามารถส่งอีเมล ข้อความ SMS หรือการแจ้งเตือนแบบพุชไปยังแอปพลิเคชันของบุคคลที่สามได้ โดยปกติแล้วจะใช้การส่งอีเมลเป็นค่าเริ่มต้น แต่ด้วยการผสานรวมกับ Twilio, Pushover, Slack, Telegram หรือระบบตรวจสอบเช่น Nagios หรือ Zabbix ตัวเลือกก็จะเพิ่มมากขึ้น

  Nuki Smart Lock Ultra: สมาร์ทล็อคที่เร็วและมีประสิทธิภาพมากที่สุดในตลาด

สุดท้ายนี้ สิ่งสำคัญที่ควรเน้นคือโซลูชันนี้ใช้ทรัพยากรน้อยมากแม้แต่บนฮาร์ดแวร์รุ่นเก่าหรือรุ่นที่มีประสิทธิภาพปานกลาง เช่น Raspberry Pi รุ่นก่อนหน้า ผลกระทบต่อประสิทธิภาพก็แทบไม่มีเลย ทำให้เหมาะสำหรับการใช้งานตลอด 24 ชั่วโมง 7 วันต่อสัปดาห์โดยไม่ต้องกังวลเรื่องการใช้พลังงาน

ข้อเสียและจุดอ่อนของ NUT

ข้อเสียหลักคือการตั้งค่าเริ่มต้นนั้นไม่ง่ายนักไม่มีตัวช่วยตั้งค่าแบบกราฟิกที่ใช้งานง่าย ทุกอย่างทำผ่านไฟล์ .conf ใน /etc/nut/ ต้องใช้ความเชี่ยวชาญทางเทคนิคในระดับหนึ่งและการอ่านเอกสารอย่างละเอียด โดยเฉพาะอย่างยิ่งหากคุณใช้ UPS หลายรุ่นหรือสภาพแวดล้อมที่มีไคลเอ็นต์จำนวนมาก

นอกจากนี้ยังมีความเกี่ยวข้องกับเครือข่าย อยู่บ้าง เมื่อใช้โมเดลมาสเตอร์/สเลฟ หากเครือข่ายล้มเหลวหรือมีปัญหาการเชื่อมต่อระหว่างไฟฟ้าดับ อุปกรณ์สเลฟอาจหยุดรับข้อมูลจาก UPS และไม่สามารถปิดระบบได้ตามที่คาดไว้ เว้นแต่จะมีกลไกสำรองข้อมูลในพื้นที่

จากมุมมองด้านความปลอดภัย การเปิดเผยโปรแกรม NUT ผ่านเครือข่ายต้องใช้ความระมัดระวัง หากผู้ใช้ รหัสผ่าน และข้อจำกัดการเข้าถึงไม่ได้รับการกำหนดค่าอย่างถูกต้อง ระบบอาจเสี่ยงต่อการเข้าถึงโดยไม่ได้รับอนุญาต ซึ่งมีความเสี่ยงอย่างเห็นได้ชัดที่บุคคลใดบุคคลหนึ่งจะสามารถปิดอุปกรณ์สำคัญจากระยะไกลได้

สุดท้ายนี้ แม้ว่าชุมชนผู้ใช้งานจะมีความเคลื่อนไหวอย่างมาก แต่ก็ยังคงเป็นเครื่องมือโอเพนซอร์สที่ได้รับการสนับสนุนจากชุมชน คุณจะไม่ได้รับการสนับสนุนเชิงพาณิชย์ตลอด 24 ชั่วโมงเหมือนกับโซลูชันที่เป็นกรรมสิทธิ์บางอย่าง ซึ่งอาจเป็นข้อเสียหากผู้ใช้งานไม่มีประสบการณ์

สถานการณ์ทั่วไป: UPS ของ APC, VMware และทางเลือกอื่นๆ เมื่อซอฟต์แวร์อย่างเป็นทางการไม่พร้อมใช้งาน

สถานการณ์ที่พบได้บ่อยในปัจจุบันคือ มีคนซื้อAPC Smart-UPSเพื่อปกป้องห้องปฏิบัติการเวอร์ชวลไลเซชันที่มีโฮสต์ ESXi หลายตัว แล้วพบว่าผู้ผลิตต้องการการ์ดจัดการเพิ่มเติมเพื่อใช้โซลูชันการปิดระบบผ่านเครือข่าย และที่แย่ไปกว่านั้นคือ ซอฟต์แวร์ปิดระบบสำหรับ VMware นั้นเลิกผลิตแล้วหรือไม่รองรับเวอร์ชันล่าสุดของไฮเปอร์ไวเซอร์อีกต่อไป

ในบริบทนี้ การมองหาโซลูชันที่ไม่ขึ้นกับผู้ผลิตและช่วยให้คุณสามารถกำหนดค่าการปิดระบบได้อย่างยืดหยุ่น จึงเป็นเรื่องที่สมเหตุสมผล นี่คือจุดที่ NUT เข้ามาเป็นตัวกลาง: คุณเชื่อมต่อ APC ผ่าน USB กับเครื่อง Linux (เช่น Raspberry Pi หรือเซิร์ฟเวอร์ขนาดเล็ก) และใช้ระบบนั้นเป็น "สมอง" ที่ตรวจจับเหตุการณ์และสั่งการปิดระบบบนเครื่องอื่นๆ

สำหรับโฮสต์ ESXi มีกลยุทธ์หลายอย่าง ตั้งแต่การใช้สคริปต์ระยะไกลที่ส่งคำสั่งปิดระบบไปยัง VM และโฮสต์ ไปจนถึงการใช้เครื่องเสมือนสำหรับการจัดการ ซึ่งจะปิดระบบทั้งหมดอย่างนุ่มนวล เมื่อได้รับการแจ้งเตือน NUT ถึงแม้จะไม่ใช้งานง่ายเหมือนซอฟต์แวร์ดั้งเดิมของผู้ผลิต แต่ก็ช่วยให้คุณสามารถควบคุมระบบได้อีกครั้ง แม้แต่กับผลิตภัณฑ์ที่ไม่มีการสนับสนุนอย่างเป็นทางการอีกต่อไปแล้วก็ตาม

หลักการโดยทั่วไปเหมือนกันในทุกกรณี คือ ทีมควบคุมจะคอยตรวจสอบ UPS ตรวจจับสถานะของแบตเตอรี่ และในกรณีที่มีความเสี่ยง จะสั่งการให้ ระบบที่เกี่ยวข้องทั้งหมด ไม่ว่าจะเป็นระบบทางกายภาพหรือระบบเสมือน ปิดระบบอย่าง นุ่มนวล

ใช้ Raspberry Pi ร่วมกับ NUT เป็นเซิร์ฟเวอร์หลักของ UPS

วิธีที่นิยมใช้กันมากคือการใช้Raspberry Pi ที่ติดตั้งระบบปฏิบัติการ Raspbianเป็นเซิร์ฟเวอร์หลักของ NUT วิธีนี้มีข้อดีหลายประการที่เห็นได้ชัด คือ Pi ใช้พลังงานน้อยมาก สามารถเปิดใช้งานได้ตลอดเวลา ราคาไม่แพง และยังช่วยให้คุณปรับแต่งการแจ้งเตือน การบูรณาการ และสคริปต์ได้โดยไม่ต้องพึ่งพาระบบหลักที่ปกป้อง UPS

โครงสร้างนั้นเรียบง่าย: คุณเชื่อมต่อ UPS กับ Raspberry Pi ผ่านพอร์ต USB หรือพอร์ตอนุกรมติดตั้ง NUT จากแหล่งเก็บข้อมูลอย่างเป็นทางการ และกำหนดค่าไฟล์ .conf ต่างๆ เพื่อกำหนดไดรเวอร์ โหมดการทำงาน (แบบสแตนด์อโลน มาสเตอร์ สเลฟ) ผู้ใช้ และการดำเนินการปิดระบบ หลังจากนั้น คุณสามารถเพิ่มอุปกรณ์สเลฟที่คอยตรวจสอบสถานะของ UPS ผ่านเครือข่ายได้

ก่อนอื่นเลย ควรตรวจสอบความเข้ากันได้ของรุ่น UPS กับ NUT ก่อน ในกรณีของ UPS รุ่นSalicru SPS SOHO+ 1400VAนั้น จะใช้ไดรเวอร์ blazer_usb ที่มีพอร์ตอัตโนมัติ แต่แต่ละรุ่นอาจต้องการไดรเวอร์ที่แตกต่างกัน ดังนั้นจึงควรตรวจสอบเอกสารอย่างเป็นทางการหรือรายการฮาร์ดแวร์ที่รองรับ

การติดตั้ง NUT บน Raspbian

การติดตั้งนั้นง่ายมาก เนื่องจากแพ็กเกจมีอยู่ในที่เก็บซอฟต์แวร์มาตรฐานอยู่แล้ว เพียงแค่เรียกใช้คำสั่งต่อไปนี้ในฐานะผู้ใช้ระดับสูงสุดเพื่อติดตั้งซอฟต์แวร์หลักพร้อมกับส่วนประกอบที่จำเป็น:

sudo apt-get install nut

หลังจากติดตั้งเสร็จแล้ว สิ่งสำคัญคือต้องตรวจสอบให้แน่ใจว่าผู้ใช้และกลุ่ม "nut" ได้ถูกสร้างขึ้นอย่างถูกต้อง เนื่องจากโปรแกรม NUT จะใช้เครื่องมือเหล่านี้ในการโต้ตอบกับฮาร์ดแวร์และจัดการบริการ หากด้วยเหตุผลใดก็ตามที่เครื่องมือเหล่านี้ไม่ได้ถูกสร้างขึ้น จะต้องเพิ่มเข้าไปด้วยตนเอง

  กราฟการระบายอากาศแบบเงียบโดยใช้ FanControl

ไฟล์การกำหนดค่าพื้นฐานอยู่ใน /etc/nut/

การตั้งค่า NUT ส่วนใหญ่จะทำใน/etc/nut/ซึ่งประกอบด้วยไฟล์ .conf หลายไฟล์ ไฟล์ที่สำคัญที่สุดและบทบาทของไฟล์เหล่านั้นในการตั้งค่าทั่วไปโดยใช้ Raspberry Pi เป็นอุปกรณ์หลัก สรุปได้ดังนี้:

ไฟล์แรกคือnut.confซึ่งกำหนดโหมดการทำงานทั่วไป ในการตั้งค่าอย่างง่ายของอุปกรณ์เพียงตัวเดียวที่ควบคุม UPS และจัดการการปิดระบบของตัวเอง โดยทั่วไปจะใช้การตั้งค่าดังต่อไปนี้:

MODE=standalone

ถัดไป เราจะพบ ไฟล์ ups.confซึ่งเป็นไฟล์ที่ระบุ UPS และไดรเวอร์ที่จะใช้ สำหรับ Salicru ที่กล่าวถึง ตัวอย่างการตั้งค่าจะเป็นดังนี้:


driver = blazer_usb
port = auto
desc = "SAI Salicru"

ไฟล์ upsd.conf ควบคุมพฤติกรรมของดีมอนที่คอยรับฟังคำขอจากไคลเอ็นต์ NUT โดยมีพารามิเตอร์ต่างๆ เช่น อายุสูงสุดของข้อมูล หรือจำนวนการเชื่อมต่อสูงสุด ตัวอย่างทั่วไปจะเป็นดังนี้:

MAXAGE 15
MAXCONN 1024
LISTEN 127.0.0.1 3493
LISTEN ::1 3493

ไฟล์ upsmon.conf ใช้ สำหรับกำหนดวิธีการตรวจสอบ UPS และสิ่งที่ต้องทำในกรณีที่เกิดเหตุการณ์ผิดปกติไฟล์นี้ระบุว่า UPS ตัวใดกำลังถูกตรวจสอบ ผู้ใช้ที่เข้าสู่ระบบ คำสั่งปิดระบบ และพารามิเตอร์ด้านเวลาและการแจ้งเตือนต่างๆ ตัวอย่างส่วนหนึ่งของไฟล์อาจเป็นดังนี้:

MONITOR salicru@localhost 1 nonmaster contraseña master
MINSUPPLIES 1
SHUTDOWNCMD "/sbin/shutdown -h +0"
NOTIFYCMD /bin/upssched-cmd
POLLFREQ 5
POLLFREQALERT 5
HOSTSYNC 15
DEADTIME 15
POWERDOWNFLAG /etc/killpower
NOTIFYFLAG ONLINE SYSLOG+WALL+EXEC
NOTIFYFLAG ONBATT SYSLOG+WALL+EXEC
NOTIFYFLAG LOWBATT SYSLOG+WALL+EXEC
NOTIFYFLAG FSD SYSLOG+WALL+EXEC
NOTIFYFLAG COMMOK SYSLOG+WALL+EXEC
NOTIFYFLAG COMMBAD SYSLOG+WALL+EXEC
NOTIFYFLAG SHUTDOWN SYSLOG+WALL+EXEC
NOTIFYFLAG REPLBATT SYSLOG+WALL+EXEC
NOTIFYFLAG NOCOMM SYSLOG+WALL+EXEC
NOTIFYFLAG NOPARENT SYSLOG+WALL+EXEC
RBWARNTIME 43200
NOCOMMWARNTIME 300
FINALDELAY 5

ไฟล์`upsd.users`กำหนดผู้ใช้ที่ได้รับอนุญาตให้โต้ตอบกับเดมอน NUT รหัสผ่าน และการกระทำที่พวกเขาสามารถทำได้ ตัวอย่างง่ายๆ คือ:


password = contraseña
actions = set
instcmds = ALL
upsmon master

สุดท้ายนี้ไฟล์ upssched.confจะจัดการความสัมพันธ์ระหว่างเหตุการณ์ NUT และการกระทำเฉพาะที่ดำเนินการโดยสคริปต์การเขียนโปรแกรม ในไฟล์นี้ จะมีการกำหนดตัวจับเวลา คำสั่ง และไปป์ไลน์ที่ใช้ในการสื่อสารเหตุการณ์ ตัวอย่างโค้ดทั่วไปอาจมีลักษณะดังนี้:

CMDSCRIPT /bin/upssched-cmd
PIPEFN /var/run/nut/upssched/upssched.pipe
LOCKFN /var/run/nut/upssched/upssched.lock
AT COMMOK * EXECUTE notify
AT COMMBAD * EXECUTE notify
AT REPLBATT * EXECUTE notify
AT NOCOMM * EXECUTE notify
AT FSD * EXECUTE forced-shutdown
AT NOPARENT * EXECUTE notify
AT SHUTDOWN * EXECUTE notify
AT ONLINE * CANCEL-TIMER shutdown
AT ONLINE * EXECUTE resume
AT ONBATT * START-TIMER shutdown 60000
AT ONBATT * EXECUTE shutdown-warning
AT LOWBATT * START-TIMER shutdown
AT LOWBATT * EXECUTE shutdown-warning

บทบาทของสคริปต์ upssched-cmd ในการปิดระบบอัตโนมัติ

ทั้งหมดที่กล่าวมานั้นจะเข้าใจได้เมื่อเราเข้าไปดู ไฟล์ /bin/upssched-cmdซึ่งเป็นสคริปต์ที่รับผิดชอบในการดำเนินการต่างๆ ที่เกี่ยวข้องกับแต่ละเหตุการณ์ เช่น การส่งอีเมล การรีสตาร์ทไดรเวอร์ การเริ่มปิดระบบ หรือเพียงแค่การเขียนบันทึกไปยังระบบบันทึกข้อมูล

โดยทั่วไป สคริปต์จะเขียนด้วยสคริปต์เชลล์ และใช้ ตัวแปรสภาพแวดล้อมNOTIFYTYPEเพื่อตรวจสอบว่าเกิดเหตุการณ์ NUT ใดขึ้น จากค่านี้ สคริปต์จะสร้างข้อความและส่งทางอีเมล รวมถึงบันทึกเหตุการณ์ลงใน syslog ด้วย ตัวอย่างของเหตุการณ์ที่รองรับ ได้แก่:

  • ออนไลน์อุปกรณ์จะกลับมาทำงานได้ตามปกติเมื่อได้รับกระแสไฟฟ้าตามปกติ
  • ออนแบตท์ไฟฟ้าดับและเครื่องสำรองไฟ (UPS) กำลังทำงานโดยใช้พลังงานจากแบตเตอรี่
  • แบตเตอรี่เหลือน้อย: ระดับแบตเตอรี่เหลือน้อย และระบบกำลังจะปิดตัวลงในเร็วๆ นี้
  • FSD (การปิดระบบโดยบังคับ): อุปกรณ์ถูกบังคับให้ปิดระบบ
  • คอมโมค / คอมบาด: การสื่อสารกับ UPS กลับมาใช้งานได้อีกครั้งหรือขาดหายไป
  • รีเพลแบตต์: แสดงว่าต้องเปลี่ยนแบตเตอรี่แล้ว
  • NOCOMM / NOPARENTเครื่องสำรองไฟ (UPS) ไม่พร้อมใช้งาน หรือไม่สามารถมอบหมายให้ผู้อื่นดำเนินการปิดระบบได้

รายละเอียดเชิงปฏิบัติอย่างหนึ่งคือ ในบางกรณี เช่น COMMBAD หรือ NOCOMM สคริปต์อาจพยายาม รีสตาร์ท ไดรเวอร์ UPS ด้วยคำสั่งเช่นนี้:

upsdrvctl start salicru

นอกเหนือจากการจัดการเหตุการณ์แล้ว สคริปต์โดยทั่วไปจะรับพารามิเตอร์เพิ่มเติมที่กำหนดการกระทำเฉพาะ เช่น "shutdown-warning", "shutdown", "resume" หรือ "forced-shutdown" ขึ้นอยู่กับพารามิเตอร์ สคริปต์จะสร้างข้อความที่แตกต่างกัน และยังสามารถเรียกใช้คำสั่งต่างๆ ได้ เช่น:

shutdown -p now o shutdown -h 100

โดยทั่วไปแล้ว ในตอนท้ายของสคริปต์ จะมีการเขียนข้อความที่สร้างขึ้นลงในsyslog ของระบบโดยใช้บรรทัดลักษณะนี้:

logger -t upssched-cmd "${_message}"

ด้วยวิธีนี้ เหตุการณ์ทั้งหมดจะถูกบันทึกไว้และสามารถตรวจสอบได้ในภายหลังเพื่อแก้ไขข้อผิดพลาดหรือตรวจสอบพฤติกรรมระหว่างไฟฟ้าดับจริง

การตรวจสอบ NUT, บันทึกข้อมูล และการแก้ไขปัญหา

เมื่อตั้งค่าไฟล์และสคริปต์เสร็จแล้ว ควรทำการทดสอบการทำงาน บางอย่าง ก่อนที่จะถือว่าระบบเสร็จสมบูรณ์ ขั้นตอนง่ายๆ คือการรีสตาร์ทระบบปฏิบัติการเพื่อให้แน่ใจว่าบริการ NUT ทั้งหมดเริ่มต้นอย่างถูกต้องเมื่อบูตเครื่อง

คำสั่งที่มีประโยชน์มากในการตรวจสอบว่าไดรเวอร์ UPS เริ่มทำงานโดยไม่มีปัญหาคือ:

upsdrvctl start salicru

หากคำสั่งนี้ล้มเหลว สิ่งแรกที่ควรทำคือตรวจสอบบันทึกระบบ โดยกรองหาข้อความ NUT หรือข้อความที่เกี่ยวข้องกับ UPS วิธีที่รวดเร็วในการทำเช่นนี้คือ:

tail -f /var/log/syslog | grep ups

โดยทั่วไปแล้ว ข้อผิดพลาดทั่วไป เช่น พอร์ต USB ไม่ว่าง สิทธิ์ไม่เพียงพอ รุ่นไม่รองรับ หรือปัญหาเกี่ยวกับไดรเวอร์ที่เลือก มักจะพบได้ในส่วนนี้ หากตรวจพบปัญหาเกี่ยวกับไดรเวอร์ คุณสามารถลองติดตั้ง NUT ใหม่ หรือใช้ไดรเวอร์ทางเลือกที่รองรับสำหรับรุ่นนั้น โดยตรวจสอบเอกสารความเข้ากันได้ นอกจากนี้ สิ่งสำคัญคือต้องตรวจสอบว่า UPS เปิดใช้งานอยู่และเชื่อมต่ออย่างถูกต้อง

  แก้ไขไมโครโฟนไม่ทำงานใน Windows 11

ในกรณีของ Raspbian ควรตรวจสอบว่าเคอร์เนลรู้จักอุปกรณ์เมื่อเชื่อมต่อผ่าน USB หรือไม่ คำสั่งอย่าง `lsusb` หรือ `dmesg` สามารถให้เบาะแสได้หากระบบไม่ตรวจพบฮาร์ดแวร์เลย

ไคลเอนต์ลูกข่าย, การบูรณาการ และระบบปฏิบัติการอื่นๆ

เมื่อเซิร์ฟเวอร์หลัก NUT ของคุณเสถียรแล้ว คุณสามารถเพิ่มไคลเอนต์รองบนเครื่องอื่นๆ ในเครือข่ายได้ บน Linux เพียงแค่ติดตั้งไคลเอนต์ NUT และกำหนดค่าให้ชี้ไปยังที่อยู่ IP ของเซิร์ฟเวอร์หลัก ยืนยันตัวตนด้วยผู้ใช้ที่กำหนดไว้ใน upsd.users และกำหนดค่า upsmon ให้ทำการปิดเครื่องโดยอัตโนมัติเมื่อได้รับสัญญาณแบตเตอรี่ต่ำหรือเหตุการณ์ FSD

บนระบบ Windows คุณสามารถใช้เครื่องมืออย่างWinNUTซึ่งทำหน้าที่เป็นไคลเอ็นต์ในการเชื่อมต่อกับเซิร์ฟเวอร์ NUT และอ่านสถานะของ UPS จากนั้น คุณสามารถกำหนดค่าการปิดเครื่องคอมพิวเตอร์ Windows โดยอัตโนมัติเมื่อเซิร์ฟเวอร์หลักระบุว่าแบตเตอรี่เหลือน้อย

NUT ก็มีให้ใช้งานบน macOS เช่นกัน โดยทั่วไปจะติดตั้งผ่านตัวจัดการแพ็กเกจ เช่น Homebrew (ตัวอย่างเช่น ด้วยคำสั่งเช่น “brew install nut”) อย่างไรก็ตาม การรองรับไดรเวอร์ USB บน macOS อาจมีข้อจำกัดมากกว่า ดังนั้นจึงไม่สะดวกเท่าบน Linux เสมอไป

สำหรับระบบปฏิบัติการ Windows แม้ว่าจะมีวิธีการทำให้ NUT ใช้งานได้ แต่ในหลายกรณี การใช้โซลูชันเฉพาะของผู้ผลิตเช่น APC PowerChute สำหรับสภาพแวดล้อม Windows โดยเฉพาะ จะเป็นวิธีที่ใช้งานได้จริงมากกว่า โดยมีเงื่อนไขว่าผลิตภัณฑ์นั้นยังคงได้รับการสนับสนุนอย่างต่อเนื่อง

ระบบแจ้งเตือนขั้นสูงและการผสานรวมกับระบบตรวจสอบ

หนึ่งในคุณสมบัติที่ทรงพลังที่สุด (และถูกใช้ประโยชน์น้อยที่สุด) ของ NUT คือการปรับแต่งการแจ้งเตือนสคริปต์ upssched-cmd ไม่จำเป็นต้องจำกัดอยู่แค่การส่งอีเมลเท่านั้น แต่ยังสามารถผสานรวมกับ API ภายนอกเพื่อส่งข้อความ SMS โดยใช้บริการต่างๆ เช่น Twilio หรือส่งการแจ้งเตือนแบบพุชด้วย Pushover หรือ Pushbullet ได้อีกด้วย

นอกจากนี้ NUT ยังผสานรวมเข้ากับแพลตฟอร์มการตรวจสอบต่างๆเช่น Nagios, Icinga, Zabbix และ Prometheus ได้อย่างราบรื่นผ่านปลั๊กอินหรือสคริปต์ที่กำหนดเอง ทำให้คุณได้รับการแจ้งเตือนเกี่ยวกับแบตเตอรี่เหลือน้อย ไฟดับ หรือการสื่อสารล้มเหลวผ่านช่องทางที่คุณใช้เป็นประจำ เช่น Slack, Telegram, แดชบอร์ด และอื่นๆ

หัวใจสำคัญคือการใช้ประโยชน์จากการเรียกใช้คำสั่งจาก upssched-cmd เพื่อเรียกใช้สคริปต์ที่เหมาะสม หรือส่งคำขอ HTTP ไปยังปลายทางบริการแจ้งเตือนของคุณ ด้วยวิธีนี้ เหตุการณ์ UPS ที่สำคัญใดๆ จะปรากฏให้เห็นภายในระบบนิเวศเดียวกันกับที่คุณใช้ตรวจสอบสถานะของโครงสร้างพื้นฐานส่วนอื่นๆ อยู่แล้ว

แนวทางปฏิบัติด้านความปลอดภัยที่ดีเมื่อเปิดเผย NUT บนเครือข่าย

เช่นเดียวกับบริการใดๆ ที่สามารถเข้าถึงได้ผ่านเครือข่าย ควรตั้งค่า daemon ของ NUT โดยคำนึงถึงความปลอดภัยตั้งแต่เริ่มต้นอย่าลืมว่ามันสามารถปิดเครื่องคอมพิวเตอร์ที่สำคัญได้ในที่สุด ดังนั้นจึงควรดำเนินการด้วยความระมัดระวัง

มาตรการป้องกันชั้นแรกคือการใช้ชื่อผู้ใช้และรหัสผ่านที่รัดกุมในไฟล์ upsd.users โดยหลีกเลี่ยงรหัสผ่านที่ง่ายเกินไปหรือรหัสผ่านที่ใช้ร่วมกับบริการอื่นๆ นอกจากนี้ยังควรจำกัดสิทธิ์ของผู้ใช้แต่ละคนให้เหลือเพียงสิ่งที่จำเป็นเท่านั้น ไม่ใช่ทุกคนจำเป็นต้องเรียกใช้คำสั่งของผู้ดูแลระบบ

ในไฟล์ upsd.conf ควรจำกัดที่อยู่ IP ที่สามารถเชื่อมต่อกับ daemon ได้โดยใช้คำสั่งต่างๆ เช่น LISTEN ที่ชี้ไปยัง IP เฉพาะ หรือทำให้บริการสามารถเข้าถึงได้จากเครือข่ายการจัดการเท่านั้น เมื่อรวมกับกฎไฟร์วอลล์แล้ว จะช่วยลดความเสี่ยงจากการโจมตีได้อย่างมาก

ในสภาพแวดล้อมที่ต้องการความปลอดภัยสูง คุณอาจพิจารณาคอมไพล์ NUT โดย รองรับ SSL/TLSและเข้ารหัสการเชื่อมต่อระหว่างมาสเตอร์และสเลฟ โดยเฉพาะอย่างยิ่งหากการเชื่อมต่อเหล่านั้นผ่านเครือข่ายที่ไม่น่าเชื่อถือ และเช่นเคย ควรตรวจสอบบันทึก (log) อย่างสม่ำเสมอเพื่อตรวจจับความพยายามในการเข้าถึงโดยไม่ได้รับอนุญาตหรือพฤติกรรมที่ผิดปกติ

สุดท้ายนี้ ขอแนะนำให้หมั่น อัปเดตระบบปฏิบัติการและ NUT อย่างสม่ำเสมอ โดยติดตั้งแพทช์รักษาความปลอดภัยและซอฟต์แวร์เวอร์ชันใหม่เมื่อมีการเผยแพร่ เพื่อลดความเสี่ยงจากช่องโหว่ที่ทราบกันดีอยู่แล้ว

การมี UPS เป็นเพียงครึ่งหนึ่งของความสำเร็จ อีกครึ่งหนึ่งเกี่ยวข้องกับการตั้งค่าระบบซอฟต์แวร์ปิดเครื่องอัตโนมัติที่มีประสิทธิภาพซึ่งผสานรวมเครื่องมือต่างๆ เช่น NUT, Raspberry Pi ขนาดเล็ก, ไคลเอนต์รองบนคอมพิวเตอร์เครื่องต่างๆ และกลยุทธ์การแจ้งเตือนและความปลอดภัยที่แข็งแกร่ง ด้วยการกำหนดค่าไฟล์ใน /etc/nut/ อย่างระมัดระวัง การปรับแต่งสคริปต์ upssched-cmd และการตรวจสอบบันทึก คุณจะมีระบบที่แข็งแกร่งซึ่งตอบสนองต่อไฟฟ้าดับได้อย่างรวดเร็ว ปกป้องข้อมูลของคุณ และให้ความยืดหยุ่นแม้ว่าผู้ผลิตจะหยุดให้การสนับสนุนอย่างเป็นทางการสำหรับสภาพแวดล้อมของคุณแล้วก็ตาม