Theppitak's blog

My personal blog.

30 สิงหาคม 2548

Thai Status in GNOME 2.12

ขอพักเรื่อง samba tricks ไว้ชั่วคราว ไว้ค่อยกลับมาเขียนต่อ ช่วงนี้ต้องสลับงาน 4 งานไปมาในหนึ่งอาทิตย์ โดยวันอาทิตย์ก็อาจไม่ว่างได้ ถ้ามีธุระของครอบครัว ยังหาเวลาพักผ่อนลำบากอยู่ (ตอนนี้อาศัยเขียน blog ก่อนนอนเอา)

หนึ่งในสี่งานที่ว่า ก็คืองานแปล GNOME ซึ่งตอนนี้มีเวลาให้อาทิตย์ละวันเดียว แต่ดีที่ทยอยแปลใน HEAD มาตลอดตั้งแต่ช่วง development phase ทำให้ไม่ต้องโหมมากนักในช่วง string freeze และมีนักแปลใน opentle mailing list มาสมทบด้วย ทำให้ภาษาไทยในขณะนี้ หลุดพ้นสถานะ unsupported มาเป็น partially supported โดยไต่ระดับจาก 46% กว่าๆ มาเป็น 61.53% ซึ่งเลยเกณฑ์ต่ำสุด (50%) มาค่อนข้างมาก ทำให้สถานะค่อนข้างมั่นคง ไม่หล่นลงไป unsupported อีกตลอดช่วง 2.12.x นี้

คาดว่า ตัวเลข 61.53% นี้ คงเป็นตัวเลขสุดท้ายแล้ว เพราะอาทิตย์นี้ผมเองต้องไปทำงานอื่นแล้ว และทราบมาว่า ทีม opentle เองก็โดนงานส่วน OO.o ดึงทรัพยากรไป คงไม่มีงานแปลเข้ามาอีกก่อน tarballs due วันจันทร์ (5 ก.ย.) นี้ ถ้าผมจะปลีกเวลามาทำงานแปลช่วงนี้ คงเป็นการแปล release notes แล้วแหละ

สำหรับ GNOME 2.14 (รุ่นถัดจาก 2.12 ที่กำลังจะออก) ยังไม่อยากตั้งเป้าที่ supported language (มากกว่า 80%) ตั้งแต่ตอนนี้ เพราะนักแปลจะทราบกันดี ว่า message ที่เก็บไว้แปลหลังๆ ส่วนใหญ่จะเป็น message ที่แปลและทดสอบยาก ยิ่งทีมแปลต้องแบ่งภาคไปทำ OO.o ด้วยแล้ว ยิ่งมีโอกาสน้อย แต่อย่างไรก็ดี สถานะภาษาไทยใน GNOME 2.14 ควรจะเขยิบขึ้นไปให้ได้มากที่สุด

ปล. เตรียมพบกับ GNOME 2.12 วันที่ 7 กันยานี้ (คงเป็น 8 กันยา ตามเวลาบ้านเรา)

Random Samba Tricks: Printing

มาต่อกันที่เรื่องเครื่องพิมพ์ ก่อนจะพูดถึงส่วนที่เกี่ยวกับ Samba ก็คุยกันเรื่องระบบการพิมพ์ของลินุกซ์เสียหน่อย

การเซ็ตเครื่องพิมพ์บนลินุกซ์ ก็มีสองส่วนหลักๆ คือติดตั้งระบบ print spooling กับติดตั้ง driver ของเครื่องพิมพ์

ระบบ print spooling ก็คือตัวจัดคิวงานพิมพ์ ใน BSD Unix จะใช้ระบบ LPR ต่อมามีการพัฒนา LPRng (LPR next generation) ขึ้นมาใหม่ ใช้เป็น print spool หลักใน RedHat อยู่พักนึง แล้วก็มี CUPS (Common Unix Printing System) ซึ่งทำอะไรๆ ได้ครบวงจรกว่า และก็ขอแนะนำให้ใช้ตัวนี้

บน debian สั่ง "apt-get install cupsys" ก็ได้ CUPS ส่วนที่เป็น print server มา ส่วนโปรแกรมสั่งพิมพ์ทั้งหลายจะอยู่ในแพกเกจ cupsys-client ซึ่งรวมคำสั่งแบบ System V หรือ cupsys-bsd ซึ่งรวมคำสั่งแบบ BSD หรือจะลงไว้ทั้งคู่เลยก็ได้ กันเหนียว

cupsys มีเครื่องมือ config ผ่านเว็บมาให้ โดยเปิดเว็บเบราว์เซอร์ ชี้ไปที่ "http://localhost:631/" ซึ่งนอกจากการ config แล้ว ยังดูและจัดการคิวงานพิมพ์ได้ด้วย แต่ถ้าใช้ GNOME ก็อาจจะติดตั้ง gnome-cups-manager เพิ่ม ซึ่งจะได้เครื่องมือแบบเดียวกันในแบบ GUI รวมทั้ง tray icon สำหรับเรียกดูคิวงานพิมพ์อย่างรวดเร็วด้วย

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

อีกส่วนหนึ่งของการติดตั้งเครื่องพิมพ์ก็คือ การติดตั้ง driver ซึ่งมีโครงการ foomatic ที่ LinuxPrinting.org รวบรวมฐานข้อมูลเครื่องพิมพ์ชนิดต่างๆ แล้วสร้างไฟล์ PPD (Postscript Printer Description) ได้ตามต้องการ ซึ่งไฟล์นี้ เมื่อป้อนให้กับ Ghostscript driver ที่ CUPS ใช้ ก็ทำให้ CUPS สามารถพิมพ์เอกสารออกทางเครื่องพิมพ์นั้นๆ ได้

foomatic ยังสนับสนุน print spooler แบบอื่นๆ นอกจาก CUPS ด้วย อาจจะลองศึกษาเอกสารจาก LinuxPrinting.org ได้ ถ้าสนใจ

ลงมือติดตั้งเครื่องพิมพ์ โดยทำเป็นขั้นๆ ดังนี้:

  1. ติดตั้ง foomatic-db-engine, foomatic-db, foomatic-db-hpijs
  2. add printer ด้วย GUI หรือ command line ก็ได้:
    • command line: ดูไฟล์ /usr/share/doc/foomatic-db-engine/USAGE.gz จะอธิบายวิธีการอย่างละเอียด ถ้าสรุปสั้นๆ ก็คือ:
      • หารุ่นเครื่องพิมพ์ในฐานข้อมูล โดยสั่ง "foomatic-configure -O | less" แล้วค้นหายี่ห้อและรุ่นของเครื่องพิมพ์จากข้อมูล XML ที่ได้ ข้อมูลที่สำคัญคือ <id> และ <driver>
      • ติดตั้งเครื่องพิมพ์ด้วยคำสั่ง "foomatic-configure -s cups -n ตั้งชื่อเครื่องพิมพ์ -c <connection> -p <id> -d <driver> -o PageSize=A4" (ตรงส่วน <connection> จะอธิบายต่อไป)
    • GUI: ติดตั้ง foomatic-gui ซึ่งจะเป็น GNOME frontend สำหรับ foomatic-configure ที่อธิบายข้างบน เวลาสั่งอาจใช้ gksu ช่วยแปลงร่างเป็น root: "gksu foomatic-gui"

ตรงส่วน <connection> นั้น จะอยู่ในรูป URL เช่น parallel:/dev/lp0 หรือ usb:/dev/usb/lp0 หรือถ้าเป็นเครื่องพิมพ์ที่ share ผ่าน Windows ก็ smb://<server>/<share>

ตรงนี้แหละ ที่เคยต้องใช้ trick

คือพยายามพิมพ์ออกเครื่องพิมพ์ของ WinXP ที่ share แบบ public โดยอ้าง printer เป็น smb://<server>/<share> แล้ว มันเงียบฉี่ โดยใน print spool ของ CUPS มันฟ้องประมาณว่า access denied (จำ message ไม่ได้) เลยค้นเว็บจนเจอคนที่ลองใช้ smb://admin:mypassword@<server>/<share> แล้วใช้ได้ ก็ปรากฏว่ามันใช้ได้จริง!

หมายเหตุ 1: ใน debian มีแพกเกจ foomatic-filters-ppds ที่เก็บไฟล์ PPD สำเร็จรูปเอาไว้สำหรับเครื่องพิมพ์ ทุกรุ่น ที่ foomatic สนับสนุน ทำให้สามารถ add printer ได้ด้วยเครื่องมือของ CUPS โดยตรง แต่แพกเกจนี้มีขนาดใหญ่พอสมควร โดยมากจึงไม่แนะนำให้ใช้

หมายเหตุ 2: ใน debian มีแพกเกจ cups-pdf ซึ่งจะเพิ่ม PDF printer ให้กับ CUPS เมื่อติดตั้งเสร็จ สามารถใช้ gnome-cups-manager เพิ่มเครื่องพิมพ์ได้ โดยจะถูก detect พบโดยอัตโนมัติ

ไว้คราวหน้าต่อเรื่องการ share printer ผ่าน samba

29 สิงหาคม 2548

Random Samba Tricks

ช่วงนี้ต้องเซ็ต samba บ่อย เจอปัญหาจุกจิกหลายแบบ เลยบันทึกเกร็ดที่พบไว้เสียหน่อย

โปรโตคอล

  • Server Message Block (SMB) เป็นมาตรฐานเครือข่ายที่ใช้แชร์ไฟล์และเครื่องพิมพ์ สร้างโดย IBM จากนั้นไมโครซอฟท์ได้พัฒนาโปรโตคอลเพิ่มเติมจนต่างจาก SMB เดิม และใช้ในเครือข่ายวินโดวส์ในปัจจุบัน ส่วน Samba เป็น implementation แบบโอเพนซอร์ส ที่เขียนขึ้นมาใหม่จากการ reverse engineer เพื่อพยายามให้ยูนิกซ์ทั้งหลาย สามารถใช้เครือข่ายร่วมกับวินโดวส์ได้
  • SMB ทำงานบน NetBIOS API ซึ่งมี implementation แบบที่ใช้ IPX/SPX กับแบบที่ใช้ TCP/IP อีกที รวมทั้งมี NetBEUI อีกอัน ที่ทำส่วน network layer ในตัวด้วย
  • NetBIOS อ้างชื่อเครื่องในเครือข่ายด้วย ASCII string

การอนุญาตสิทธิ์

SMB สามารถอนุญาตสิทธิ์การเข้าใช้ทรัพยากรต่างๆ ได้สามแบบหลักๆ:

  1. share level คือกำหนดสิทธิการใช้งานที่แต่ละทรัพยากรไปเลย ว่าจะให้อ่าน/เขียนได้หรือไม่ การป้องกันอาจเป็นการใช้รหัสผ่านง่ายๆ
  2. user level คือมีการสร้าง user account ในเครื่องแต่ละเครื่อง และให้สิทธิ user เป็นรายๆ ได้
  3. user level แบบใช้ domain คือแทนที่จะสร้าง user ประจำแต่ละเครื่อง ก็กำหนดให้ server เครื่องหนึ่งควบคุม domain และเก็บ user account ของทั้ง domain ซึ่งมีข้อดีคือ ผู้ใช้ไม่ต้องแยกจำรหัสผ่านที่แต่ละเครื่องเหมือนแบบ user level ปกติ หรือจำรหัสผ่านที่แต่ละทรัพยากรไปเลยแบบ share level

Win95, Win98, WinME สามารถ share ได้สองแบบแรก ถ้าจะใช้ domain ต้องใช้ WinNT หรือ Win2000/2003 เป็นเซิร์ฟเวอร์ ส่วน WinXP นั้น ถึงสายการพัฒนาจะมาจาก Win2000 แต่ก็พยายามให้ interface คล้าย Win9x การ share จึงกระเดียดไปทาง Win9x แต่ถ้า Samba จะเข้าใช้ จะเกิดความสับสนเล็กน้อย เพราะบางครั้ง การกำหนดสิทธิ์ที่ตั้งไว้เป็น share level ต้องใส่ user, password ด้วย! และถ้าเครื่อง WinXP นั้น ตั้งไว้ให้ auto login ก็จะต้องใช้ user และ password ว่า "admin" และ "mypassword" ตามลำดับ ใครที่พยายามสั่งพิมพ์จากลินุกซ์ผ่าน WinXP แล้วไม่ออก อาจจะลองใช้ trick นี้ดู

SMB กับ Subnet

ปกติ Network Places ของ Windows จะมีระบบ resolve ชื่อเครื่องกับ address จริง โดยจะมีเครื่องใดเครื่องหนึ่งทำหน้าที่เป็น master คอย update ชื่อ ซึ่งเครื่องที่เข้ามาใหม่ จะ broadcast รายงานตัวและ sync รายชื่อเครื่องจาก master มาที่ตัวเอง ซึ่งทั้งหมดนี้ หมายความว่า เครื่องทั้งหลายจะเห็นกันได้ภายในวงแลนเดียวกันเท่านั้น ถ้ามีการทำ subnet ก็จะไม่เห็นเครื่องอื่นที่อยู่นอกเหนือ gateway ออกไปเลย ถ้าจะให้เห็นได้ ก็ต้องตั้ง WINS server ขึ้นมาทำหน้าที่คล้ายๆ DNS ในอินเทอร์เน็ต จากนั้น ตั้งให้เครื่องลูกข่ายใช้ WINS (โดยการตั้งค่า WINS ตรงๆ หรือให้ DHCP server แจกมาให้ก็ตามแต่) resolve ชื่อเครื่องให้เป็นเบอร์ IP แล้วก็จะมองเห็นเครื่องในเน็ตระดับบนได้

การใช้ WINS มีข้อดีอีกอย่าง คือลด packet ในเครือข่ายลงได้ (นิดหน่อย) เพราะเครื่องลูกข่ายไม่ต้อง broadcast หรือตรวจสอบ master บ่อยๆ เมื่อมีจุดเดียวให้ติดต่อ คือ WINS server

Samba บนลินุกซ์ สามารถตั้งให้ทำหน้าที่ WINS server ได้ด้วย

ยาวแล้ว ไว้คราวหน้าค่อยเขียนถึงเรื่องวุ่นๆ ของเครื่องพิมพ์ที่เจอมา

24 สิงหาคม 2548

Mind Mapping

จะลงมือเขียนเอกสารทีไร ผมจะเริ่มจากร่าง mind map ก่อน เพื่อกำหนดโครงร่างและเชื่อมโยงเนื้อหา แล้วค่อยลงมือเขียนเนื้อหา และอันที่จริง เคยใช้ mind map นำเสนอแทน slide ด้วย (ด้วยความเร่งด่วน เพราะเขียนสไลด์ไม่ทัน) ก็ปรากฏว่า มีเสียงตอบรับที่ดี ว่าทำให้เห็นภาพรวมได้ในหน้าเดียว

พอดีกำลังต้องเขียนเอกสารอีก แล้วก็เหลือบไปเห็นแพกเกจใหม่ใน debian ชื่อ vym (View Your Mind) ซึ่งเป็นเครื่องมือวาด mind map ดู screenshot แล้วก็สวยดี เลยติดตั้งซะ เป็นโปรแกรมแรกบนลินุกซ์ที่เห็นการวาด mind map ตามแนวคิด ของ Tony Buzan ตัวอื่นๆ ที่เคยเห็น (เช่น gjots) จะเน้นแต่โครงสร้าง หรือ outline ซึ่งจะนำเสนอในรูป collapsible tree view แต่แนวคิดของ Buzan นั้น จะเน้นรูปร่าง การใช้สี ภาพประกอบด้วย เพื่อใช้สมองทั้งสองข้างช่วยกันจำ หรือบางตัวที่วาดรูปได้ (เช่น FreeMind, kdissert) ก็ใช้รูปแบบที่ตายตัวเกินไป (แต่ความสามารถก็รอบตัวจริงๆ บางทีอาจจะลองใช้บ้างเหมือนกัน)

แต่ vym เนี่ย อนุญาตให้จัดโหนด ลงสี แทรกรูปภาพประกอบได้หมด แถมรูปลักษณ์ยังคล้ายกับที่วาดด้วยมือด้วย ถูกใจครับ แต่ถ้าใช้ GTK+ จะถูกใจกว่านี้ (vym ใช้ Qt 3 ซึ่ง render ภาษาไทยไม่ค่อยสวย)

VYM screenshot

ตอนแรกเขียนแบบพื้นๆ ไม่ได้ลงสีใส่รูปอะไร แต่พอจะจับ screenshot เลยตกแต่งนิดหน่อย.. พอละ เดี๋ยวไม่ได้เริ่มเขียน :P

21 สิงหาคม 2548

Cairo Show-off

ไม่ได้เขียน blog ไปเกือบสามอาทิตย์เลยหรือนี่ งานรัดตัวมากครับช่วงนี้ แทบจะไม่มีวันหยุดเลย

ในที่สุด GTK+ 2.8 (stable version) ก็ ออกมาแล้ว เมื่ออาทิตย์ก่อน เพื่อรองรับ GNOME 2.12 ที่จะออกในต้นเดือนหน้า แต่ผมซึ่งใช้ GNOME/GTK+ จาก CVS มาตลอด ก็ยังไม่เคยลอง Cairo support ใน GTK+ รุ่นใหม่นี้เลย เพราะหมู่นี้ไม่มีเวลาเล่นโน่นเล่นนี่เท่าไร แต่จำได้ลางๆ ว่า มีใครที่ GNOME เคยพูดถึง cairo-gtk-engine ที่ Owen เคยใช้ demo ว่าแล้วก็เลยลอง checkout และ build โดยผ่าน jhbuild

$ jhbuild buildone -a cairo-gtk-engine

จบปุ๊บ จะได้ GTK+ theme ชุด Caligula มาให้เลือก มี Caligula-grassy, Caligula-sketchy, Caligula-swirly ซึ่งใช้ cairo-gtk-engine เป็น theme engine โดยจะวาดปุ่มแต่ละปุ่มแบบสุ่มให้เกิดความแตกต่างเล็กน้อย และคงจะใช้ cairo ทำ image composition แบบ real-time โดยใช้ X Render extension ที่ X server เพื่อความเร็วในการประมวลผล

Cairo-GTK+ Caligula Swirly Theme

ข้างบนนี้คือ Caligula-swirly เรียกว่าเป็น theme ที่เอาไว้โชว์อย่างเดียวจริงๆ เพราะทั้งเซ็ตยังไม่เข้ากันเท่าไร

อ่านพบอีกที่หนึ่ง ว่าให้ลง glitz ด้วย เพื่อใช้ OpenGL backend ของ Cairo ซึ่งจะทำให้เร็วขึ้น ..ว่าแล้วก็ build cairo ใหม่ซะ..

01 สิงหาคม 2548

UPS Goes NUT

หน้าฝน + พายุเข้า + น้ำมันแพง = ไฟดับ + ไฟตก + ไฟกระชาก? :-P

ว่าแล้วก็เลยติด UPS ให้กับคอมพิวเตอร์ซะ หลังจากที่ผัดผ่อนมานาน พร้อมกันนี้ ก็ไปเซ็ตระบบ auto shutdown ให้กับเซิร์ฟเวอร์ที่โรงเรียนด้วย

สำหรับเครื่องเดสก์ท็อปตามปกติ แค่มีตัวกรองไฟเวลาปกติ เพื่อยืดอายุ power supply และมีตัวจ่ายไฟสำรองเวลาไฟดับ พอให้มีเวลาเซฟงานและสั่ง shutdown เครื่อง ก็น่าจะเพียงพอแล้ว แต่สำหรับเซิร์ฟเวอร์ที่ต้องเปิดทำงานนานๆ โดยไม่มีคนอยู่ประจำตลอดนั้น นอกจากต่อ UPS แล้ว ก็ต้องมีระบบ shutdown อัตโนมัติ เพื่อให้เครื่องได้ shutdown ให้เรียบร้อย ก่อนที่แบตเตอรีของ UPS จะหมด และต้อง restart เมื่อไฟมา หรือ activate on LAN ด้วย เพื่อการให้บริการที่ไม่สะดุด

จากความรู้ที่ได้จาก UPS HOWTO ปรากฏว่า โปรโตคอลที่ UPS ใช้แจ้งเหตุมายังคอมพิวเตอร์ เป็นโปรโตคอลที่ยุ่งเหยิงที่สุด แต่ละยี่ห้อจะใช้สายส่งสัญญาณต่างๆ กันไป ทั้ง RS-232 ปกติ, สายต่อพิเศษที่ใช้หัวต่อแบบ RS-232, และ USB ซึ่ง UPS แบบเก่าจะใช้ RS-232 เป็นหลัก และใช้สายสัญญาณต่างๆ ของ RS-232 ส่งข้อมูลไม่เหมือนกันอีก ตามแต่ผู้ผลิตจะตั้งเอาเอง ดังนั้น ถ้าจะให้เซ็ตง่ายๆ ควรเลือก UPS แบบใช้ USB จะดีกว่า

แต่โชคดีหน่อย ที่ UPS มักจะมีโปรแกรม monitor สำหรับยูนิกซ์ต่างๆ รวมทั้งลินุกซ์มาให้ด้วย (คงเป็นเพราะยูนิกซ์/ลินุกซ์ยังครองส่วนแบ่งตลาดเซิร์ฟเวอร์เยอะอยู่) แต่ถ้าไม่มี หรือมี แต่อยากใช้ FOSS มากกว่า ก็มีตัวเลือกหลักๆ คือ Network UPS Tools (NUT) กับ APC UPS Daemon (Apcupsd) ซึ่ง NUT ค่อนข้างเป็น framework ที่ใหญ่กว่า และครอบคลุม UPS กว้างกว่า ส่วน Apcupsd นั้น มุ่งใช้กับ UPS ยี่ห้อ APC โดยเฉพาะ

ทั้งสองตัวมี Windows client ด้วย สามารถใช้ UPS ร่วมกับ Windows server ได้

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

ส่วน Apcupsd จะมี daemon ตัวเดียว ที่สามารถ config ให้รับข้อมูลจาก serial/USB port หรือผ่านเน็ต และตั้งให้เป็น master หรือ slave ได้

ในกรณีที่ใช้ UPS ตัวเดียว จ่ายไฟให้กับเครื่องเครื่องเดียว ก็ตั้ง UPS daemon แบบ serial หรือ USB แล้วแต่กรณี โดยตั้งค่า driver และ port ใน ups.conf ถ้าเป็น NUT (หรือ apcupsd.conf ถ้าเป็น Apcupsd) จากนั้น ก็ตั้งค่าการ monitor โดยตั้งค่าใน upsmon.conf ถ้าเป็น NUT (หรือ apcupsd.conf [ไฟล์เดิมนั่นแหละ] ถ้าเป็น Apcupsd)

ถ้ามีเครื่องอื่นใช้ UPS ร่วมด้วย ก็ตั้ง UPS monitor ที่เครื่องอื่น โดยถ้าเป็น NUT ก็ให้เครื่องพวกนั้น monitor แบบ slave (ส่วนเครื่องหลัก ไม่่ว่าจะมีเครื่องอื่นต่อพ่วงหรือไม่ ก็ monitor แบบ master อยู่แล้ว) แต่ถ้าเป็น Apcupsd ก็มีสองแบบที่เป็นไปได้ คือแบบ master-slave เหมือนกันนี้ (โดยที่ slave ตั้งชนิด UPS เป็นแบบ ethernet [แทนที่จะเป็น serial หรือ USB] แล้วชี้ไปยัง IP ของ master ส่วน master ก็ลิสต์รายการ slave ทั้งหมด) กับอีกแบบหนึ่งคือผ่าน NIS โดยให้ master เปิด NIS service แล้วให้เครื่องอื่น poll ข้อมูล UPS เป็นระยะๆ เอา (ซึ่งคู่มือ Apcupsd บอกว่า แบบนี้เป็นแบบใหม่ เซ็ตง่ายกว่า เพราะไม่ต้องแก้ config ที่ master ทุกครั้งที่มีการเพิ่ม-ลดหรือเปลี่ยน IP ของ slave)

แล้วก็ตั้งพารามิเตอร์ใน upsmon.conf (สำหรับ NUT) หรือ apcupsd.conf (สำหรับ Apcupsd) ว่าจะให้ shutdown เมื่อแบตเตอรีเหลือไฟกี่เปอร์เซ็นต์ หรือเหลือเวลาจ่ายไฟได้อีกกี่นาที ทั้งนี้ ขึ้นอยู่กับชนิดของ UPS ว่าเป็น smart UPS หรือไม่ด้วย ถ้าเป็น UPS แบบดาดๆ ก็จะแจ้งแค่ OL/OB (on-line/on-battery) และ LB (low battery) เท่านั้น ก็อาจจะสั่ง shutdown เครื่องเมื่อได้รับสัญญาณ LB ก็น่าจะเพียงพอ

NUT ยังมี component อื่นช่วยอำนวยความสะดวกอีก เช่น upsc (UPS client) เป็น command line ไว้สอบถามสถานะของ UPS, nut-cgi เป็น cgi-bin ไว้ให้ตรวจสอบสถานะของ UPS ผ่านเว็บได้

ดูๆ แล้ว NUT ท่าทางน่าใช้กว่า แต่ถ้าใช้ UPS ยี่ห้อ APC ล่ะก็ Apcupsd ดูจะใช้ความสามารถของ APC ได้เต็มที่กว่า (แต่ apcsmart module ของ NUT ก็พยายามพัฒนาให้ใช้ข้อมูลจาก APC ให้หมดเหมือนกัน)

hacker emblem