mrgill | December 11, 2009 | 16,810 Views
update 27/09/2012 ครับ เนื่องด้วยมีผู้ใช้งาน script ผ่าน blog ของผมเป็นจำนวนมากทำให้ cpu ของเครืื่อง server hosting ทำงานหนักผมจึงขอเอาไฟล์ gsms.php ออกจาก blog นะครับใครต้องการใช้ script สามารถโหลดเอาไปติดตั้งกันได้เองตามตอนท้ายบทความได้เลยครับ
–
ีupdate status 06/03/2012 script ยังใช้งานได้ครับ
–
ก่อนอื่นขอหาวยาวๆ ก่อนกล่าวสวัสดีท่านผู้อ่านทุกท่าน เมื่อคืนบ้าพลังอะไรไม่รู้อยากเขียน script ส่ง sms เตือนเมื่อ server down ที่จริงชาวบ้านเค้าก็ทำขายกันเยอะแยะ แต่หลังจากที่ผมได้ใช้ Google Calendar แล้วให้มันส่ง sms เตือนแถมฟรีอีก ก็เลยคิดอยากใช้ประโยชน์จากมันเพิ่มเติมก็ค้นๆ Google อีกเช่นเคยครับ ไปเจอบทความใน ThaiAdmin เรื่อง google calendar sms ที่ท่าน smartsoft เขียนไว้ก็เลยลองโหลด Libraries Google Calendar SMS มาเล่นดูบ้าง ซึ่งเมื่อลองดูแล้วก็ถือว่าใช้งานง่ายทีเดียวเลยเอามาโมต่อ โดยให้ Shell Script เป็นตัว Submit form แทน
ความสามารถของ Script
1. ส่ง sms แจ้งเตือนเมื่อ ping ไม่เจอ server
2. เก็บ log ในตัว เพราะทุกครั้งที่มันส่ง sms มันจะไปเพิ่ม Event ใน Google Calendar ทำให้เราเข้าไปตรวจสอบย้อนหลังได้
3. ไม่ต้องเสียเงินค่าส่ง SMS แม้แต่น้อย (พี่ Google เค้าใจดี)
มาดูขั้นตอนการทำกัน
ก่อนอื่นเราก็ต้องไป Verify เบอร์มือถือใน Google Calendar ก่อนครับ ขออนุญาตท่าน smartsoft ทำรูปใหม่นะครับ
1. ขั้นแรก ล็อกอินเข้า Google Calendar http://www.google.com/calendar ก็ใช้ User ของ Gmail นั้นแหละครับ
ล็อกอินแล้วคลิกที่ Settings เพื่อไปปรับเมนูให้เป็นภาษาไทย (หากใครเป็นภาษาไทยอยู่แล้วข้ามไปขั้นตอนต่อไปได้เลย)
คลิก Settings
2. เลือก Language ให้เป็น ภาษาไทย แล้วกด Save
เลือก ภาษาไทย
3. กลับมาหน้าปฏิทินคลิกที่ การตั้งค่า
4. คลิกที่ ตั้งค่าอุปกรณ์เคลื่อนที่
5. กรอกเบอร์โทรศัพท์มือถือของคุณลงไป จากนั้นกดปุ่ม ส่งรหัสยืนยัน
6. รอสักครู่ Google จะส่ง SMS รหัสยืนยันมาให้ เมื่อได้รับรหัสยืนยันแล้วนำมากรอกในช่อง รหัสยืนยัน จากนั้นคลิก สิ้นสุดการตั้งค่า
กรอกรหัสยืนยันลงไป
สถานะจะเปลี่ยนเป็นสีเขียวหลังยืนยันหมายเลขโทรศัพท์สำเร็จแล้ว
7. คลิกที่แท็บ ปฎิทิน แล้วคลิกที่ การแจ้ง
8. เลือก การแจ้งเตือนกิจกรรม ให้เป็น SMS แล้วกด บันทึก (** สำคัญมาก คุณต้องเลือกให้เป็น SMS เป็นอันดับแรก)
ตั้งเวลาตามใจชอบเลยครับ(ตรงนี้ไม่เกี่ยวกับ SMS Alert ใน Script ครับ)
เสร็จสิ้นสำหรับส่วนของ Google Calendar ครับต่อไปมาถึงตัว Shell Script กันบ้าง
ผมได้เอา Script ของ Vivek Gite แห่ง cyberciti.biz มาแก้ไขนิดหน่อยครับ ต้นฉบับอยู่ที่http://bash.cyberciti.biz/monitoring/monitor-windows-linux-server-with-ping-script/
ผมตั้งชื่อ Shell Script ตัวนี้ว่า observman.sh <<กดดาวน์โหลด
#!/bin/bash # Simple SHELL script for Linux and UNIX system monitoring with # ping command # ------------------------------------------------------------------------- # Copyright (c) 2006 nixCraft project # This script is licensed under GNU GPL version 2.0 or above # Modify by mrGilL # ------------------------------------------------------------------------- # This script is part of nixCraft shell script collection (NSSC) # Visit http://bash.cyberciti.biz/ for more information. # ------------------------------------------------------------------------- # Setup SMS User below # See URL for more info: # http://www.cyberciti.biz/tips/simple-linux-and-unix-system-monitoring-with-ping-command-and-scripts.html # http://imrgill.com/2009/12/11/monitor-server-with-sms-alert-shell-script/ # ------------------------------------------------------------------------- # add ip / hostname separated by blank space HOSTS="192.168.1.2 eng.ru.ac.th imrgill.com www.pca.co.th" # no ping request COUNT=5 # Set SMS Username (Google Calendar) GCUSER="user@gmail.com" GCPASSWD="gmail-passwd" for myHost in $HOSTS do count=$(ping -c $COUNT $myHost | grep 'received' | awk -F',' '{ print $2 }' | awk '{ print $1 }') if [ $count -eq 0 ]; then # 100% failed wget --force-html --recursive --no-check-certificate -nd --delete-after "https://imrgill.com/google_sms/gsms.php?username=$GCUSER&password=$GCPASSWD&title=Server $myHost Down" fi done
ใส่ IP หรือชื่อ Host ของ Server ที่ต้องการ Monitor ลงไป หากมีหลายเครื่องให้คั่นด้วยเว้นวรรค
ต่อมาแก้ไข GCUSER และ GCPASSWD เป็นของท่าน(Gmail ของท่าน)
อย่าลืมกำหนดสิทธิ์ให้มันรันได้ด้วยนะครับ
root@mrgill-laptop:/root# chmod +x observman.sh
สุดท้ายจับ Shell Script ของเราใส่ใน Crontab โดย
root@mrgill-laptop:~# crontab -e
ผมตั้งให้มันเช็คทุก 15 นาทีครับ
# m h dom mon dow command 0-59/15 * * * * /root/observman.sh > /dev/null
ลองทดสอบง่ายๆ ดูครับ ใช้ไอพีเครื่องในวงแลนคุณก็ได้ จากนั้นไป disable การ์ดแลนหรือจะถอดสายแลนของเครื่องที่คุณต้องการ Monitor ก็ได้ รอประมาณ 2 นาทีจะมี SMS ส่งจาก Google มาหาคุณ
ภาพตัวอย่างหากแก้ไขถูกต้องครับ
จะมี event add เข้าไปใน google calendar
ภาพข้อความจาก google sms
*หมายเหตุ : มีคนถามมาว่าทำไมต้องส่งข้อมูลผ่าน blog ผมด้วย ส่งเข้า Google เลยไม่ได้เหรอ คำตอบก็คือมันต้องมี API ติดต่อไปยัง Google Calendar ครับ ซึ่งผมได้ฝังไว้บน blog ของผมเอง และหากใครกังวลเรื่องความปลอดภัยผมเองก็มีไฟล์ API ให้โหลดเอาไว้ติดตั้งบน Server ตัวเองได้ครับซึ่งสามารถดาวน์โหลดได้จากที่นี่ google_sms.tar.bz2 โหลดเสร็จแล้วก็เอาไปแตกไว้ใน wwwroot และอย่าลืมไปแก้ URL ใน Shell Script ด้วยนะครับ