การเขียน Shell Script แจ้งเตือน เมื่อเครื่อง Server Down
ไม่ได้เขียนบทความมานานแล้วครับ นี่เป็นบทความแรกของผม ภายหลังจากเข้าทำงาน
ตำแหน่ง Network Admin ที่บริษัทผลิตอุปกรณ์เครือข่ายแห่งหนึ่ง...
ทุกคนคงรู้เบื้องต้นแล้วนะครับ หน้าที่ของ Network Admin คือการคอยดูแล และ Monitor
ระบบเครือข่าย ขององค์กร และของลูกค้า เมื่อเกิดปัญหาก็แก้ไขทางเทคนิคต่างๆ เพื่อให้
ระบบสามารถกลับมาใช้งานได้เป็นปกติ โดยเร็วที่สุด...
มาเข้าเรื่องกันครับ โจทย์แรก เลยที่ได้เมื่อมาเข้าทำงาน คือ
" เขียน Shell Script เพื่อตรวจสอบสถานะการทำงานของ Router ( Online/Offline ) แล้ว
เก็บ Log การทำงาน โดยถ้าหากพบว่า เครื่อง Router นั้น Down อยู่ ต้องแจ้งเตือน ให้ผู้ที่
เกี่ยวข้องทราบทันทีผ่านทาง Email เป็นต้น "
ก็คือการใช้คำสั่ง Ping และตามด้วย IP เครื่องปลายทางครับ (แหม อันนี้ทุกคนคงรู้อยู่แล้ว)STEP 1 : วิธีการง่ายที่สุด ที่จะทราบได้ว่าเครื่องปลายทางนั้น Online อยู่หรือไม่?
มาเริ่มกันเลยครับ
vi iplist.txt >> สร้างไฟล์เก็บ IP List ที่ต้องการ Ping *ใช้ editor อื่นๆ ก็ได้ครับ
10.100.255.6
10.100.255.10
10.101.0.2
10.100.0.2
10.100.0.6
>> เพื่อความยืนหยุด สร้างเป็นไฟล์เพื่อเก็บ IP List เลย เพื่อสามารถ เพิ่ม-ลบ ได้ตลอด
STEP 2 : หลังจากที่สร้างไฟล์ เพื่อบันทึก IPList สำเร็จแล้ว ต่อมาเป็นขั้นตอนของการเขียน Script เพื่อเรียกใช้งาน iplist.txt และเขียนคำสั่ง Ping ไปยัง iplist ดังกล่าว เพื่อตรวจสอบสถานะการทำงาน
vi pinghost.sh >> สร้างไฟล์ Shell Script เพื่อเขียนคำสั่ง Ping
#!/bin/bash
# Ping Script for check status ONLINE/OFFLINE
cat /pathที่เก็บไฟล์/iplist.txt | while read output <<pathตำแหน่งที่เก็บไฟล์ iplist.txt
do
ping -c 5 "$output" > /dev/null << Ping จำนวน 5 ครั้ง
if [ $? -eq 0 ]; then
echo "Host: $output is Online! at $(date)" >> /pathที่เก็บไฟล์/uplog.txt
else
echo "Host: $output is Down!! at $(date)" >> /pathที่เก็บไฟล์/downlog.txt
fi
done
** ทดสอบรันคำสั่ง Ping Script เพื่อตรวจสอบการทำงาน
./pinghost.sh >> คำสั่งรันไฟล์ pinghost.sh
มาถึงตอนนี้เราสามารถที่จะ รันคำสั่งเพื่อใช้ทดสอบการทำงานของไฟล์ Ping Script ได้แล้ว
หาก Ping ไปแล้วไม่ Host ปลายทางไม่ตอบสนอง ข้อมูลจะทำการบันทึกไว้ที่ไฟล์
downlog.txt เช่น Host: 10.100.255.6 is Down! at Mon Sep 14 04:45:05 ICT 2015
แต่ถ้าหาก Ping Script เจอเครื่อง Host ปลายทางออนไลน์อยู่ ข้อมูลจะถูกบันทึกไว้ที่ uplog.txt
เช่น Host: 10.100.255.6 is Online! at Mon Sep 14 04:45:05 ICT 2015 เป็นต้น
เพียงแค่นี้ก็สามารถที่จะ ตรวจสอบสถานะของ
IP Host ปลายทางได้แล้วครับ
ขั้นตอนต่อไปคือ :
เขียน Crontab เพื่อตั้งว่าให้เครื่องสามารถรันคำสั่ง Ping Script
ตลอดเวลา หรือ ตามที่เรากำหนด เช่น รัน Script ทุกๆ 5 นาที
และ
เขียน Script แจ้งเตือน Email เมื่อ Ping Host
ปลายทางแล้วพบว่า สถานะเครื่อง Down อยู่
ไว้มาต่อกันที่บทความต่อไปนะครับ :)
เขียนโดย : อัศวิน (Ausawinz)
รูปภาพประกอบ : google>image>Server Down