Script Auto shutdown when Power failure : Script ปิดเครื่องเมื่อไฟดับ (With UPS : ในระบบทีมี UPS)


น้องที่ทำงานเก่ามีปัญหามาถาม
ข้อมูลเบื้องต้น:
- อยากให้ server (Windows) Shutdown ตัวเองเมื่อไฟดับ
- มี Smart UPS แต่ไม่พอจำนวน Server
- ไฟดับสั้นๆ ไม่มีปัญหา แต่กลัวไฟดับนานๆ
- ระบบมีการเชื่อมต่อกับสาขาผ่าน internet ถ้าไฟดับนานก็ใช้ไม่ได้
- internet มี 2 เส้น (Load Balancing)

เลยคุ้ยๆดูใน google ได้ Solution แปลกๆ มาแบ่งกัน
โดยทำ Batch script
ให้ server ping check กับ google-public-dns (8.8.8.8) เป็นระยะ
ถ้า ไม่สามารถเช็คได้ (internet down) ให้ปิดเครื่องภายใน 15 นาที
(ถ้าจะปรับเวลาไปแก้ตรง -t 900 เป็นตัวเลขที่นับเป็นวินาที)

#Batch Script
@echo off
ping 8.8.8.8 -l 5 -n 1
IF ERRORLEVEL 1 shutdown /s /f /t 900
exit

Save เป็น  PingShutdown.bat
แล้วทำ Bat script อันที่สอง
ให้ Server ping check ซ้ำ กรณีที่ไฟมาเร็วกว่า 15 นาที

@echo off
ping 8.8.8.8 -l 5 -n 1
IF ERRORLEVEL  shutdown /a
exit

Save เป็น  DenyShutdown.bat  

 แล้วตั้ง Scheduled task ให้ Run Batch file นี้ตามเวลาที่เหมาะสม
เช่น
หาก UPS ของคุณสามารถรองรับโหลดขณะไฟดับได้ 30 นาที
อาจจะตั้งให้
 PingShutdown.bat  Run ทุก 15 นาที
 DenyShutdown.bat  Run ทุก 10 นาที


วิเคราะห์การทำงานของ Script
- กรณีไฟดับ Router ทั้งสองตัว ก็จะดับไปด้วย Script จะทำงานตามเวลาที่ตั้งไว้
- หากภายใน 15 นาที ไฟฟ้ากลับมาและ Router ตัวใดตัวหนึ่งสามารถทำงานได้ปกติ Script ตัวที่สองที่ทำงานบ่อยกว่าจะเช็คได้ทัน และยกเลิกการ Shutdown ระบบได้
- กรณีไฟไม่ดับ แต่มีปัญหาที่ Internet เส้นใดเส้นหนึ่ง ระบบก็จะยังไม่ Shutdown เพราะยัง Ping เจอ 8.8.8.8 ได้อยู่

สิ่งที่ต้องทำเพิ่มเติม











กรณีที่ Router ที่ต่อ internet ทั้งคู่ต่อกับ UPS ให้ถอดออกต่อกับปลั๊กธรรมดา
เพื่อให้เครื่องดับ

ปล. แนะนำน้องไปแบบนี้เพราะ Router ที่ใช้ก็แถมมากับ internet
มี spare เยอะแยะ พังไปก็ไม่เป็นไร หาใหม่ได้ง่ายกว่า server







ความคิดเห็น

บทความที่ได้รับความนิยม