Server Down รู้ได้ทันทีผ่าน SMS แถมฟรีด้วย
mrgill | December 11, 2009 | 4,902 Views
ก่อนอื่นขอหาวยาวๆ ก่อนกล่าวสวัสดีท่านผู้อ่านทุกท่าน เมื่อคืนบ้าพลังอะไรไม่รู้อยากเขียน 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 ด้วยนะครับ
หวังว่าบทความนี้คงเป็นประโยชน์กับผู้อ่าน
แหล่งข้อมูล : http://www.thaiadmin.org/board/index.php?topic=114285.0
http://bash.cyberciti.biz/monitoring/monitor-windows-linux-server-with-ping-script/
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Thailand.
Category : Internet,Linux,Programming,Security,Server,Technology,Ubuntu,Windows



44 Comments Leave a Comment
1.
piriya | December 11, 2009 at 8:56 AM
ดีจังเลย แล้วเมื่อไหร่จะทำ Shell Script ให้ส่ง SMS เตือนว่าอีก 30 นาทีท่านจะเจอเนื้อคู่บ้างอ่ะ รอใช้ระบบนั้นอยู่นะ
2.
gap | December 11, 2009 at 9:45 AM
ถ้ากรอกเบอร์โทร เดี๋ยว ระบบจะส่ง sms ไปบอกเลย ว่าเจอเนื้อคู่แล้ว
3.
Ball Juicy | December 11, 2009 at 4:05 PM
ทำให้ ใส่ใน wrt54gl ด้วยเหล่ะ
4.
mrgill | December 11, 2009 at 4:08 PM
เดี่ยวกลับไปลองที่ห้องแน่นอน
5.
up_to_you | December 11, 2009 at 4:09 PM
อ่ะ จริงหรอ แล้วถ้าไม่เจอเนื้อคู่ ก็จะเจอเนื้องอกแทนป่ะ ฮ่ะๆๆ
6.
Keng | December 11, 2009 at 4:33 PM
ยังไม่ได้ลองทำแต่อยากทำ
น่าสนใจดี
รู้ว่า google มีส่งเอสเอ็มเอสเตือนฟรี
แต้งกิ้ว เด๋วว่าง ๆ ทำแน่
7.
dae_da_narak | December 11, 2009 at 8:53 PM
เก่งค่ะ ^-*
8.
opatsavao | December 11, 2009 at 9:42 PM
ทดลองให้แล้วครับ
ใช้ได้…ผ่านฉลุย
ขอบคุณครับ
9.
dsin | December 11, 2009 at 11:43 PM
ทำไมต้องตั้งให้ส่ง username กับ password ของ gmail
เข้าเวป imrgill.com ด้วยอ่ะครับ ??
ส่งเข้า google โดยตรงไม่ได้หรอ
คือ เมล์ผมลิงก์กับอะไรหลายอย่าง กลัวว่าจะไม่ปลอดภัยน่ะครับ
10.
mrgill | December 11, 2009 at 11:51 PM
คือผมฝังตัว API ไว้บนเว็บผมเองหนะครับ
ไม่ต้องห่วงเรื่องความปลอดภัยครับ
รับประกันว่าไม่มีการเก็บข้อมูลใดๆ ทั้งสิ้น
และผมใช้ Protocal HTTPS ในการส่งข้อมูลจึงมันใจได้ครับว่าข้อมูลที่ส่งมาถูกเข้ารหัสและปลอดภัยอย่างแน่นอน
11.
dsin | December 11, 2009 at 11:59 PM
ถึงแม้ว่า ผมจะมั่นใจว่า ข้อมูลไม่ได้ถูกเก็บ แต่เชื่อว่า มีหลายคนที่ อดห่วงไม่ได้อยู่ดี 555
โปรแกรมนี้มีประโยชน์มากจริงๆ อยากให้ เขียนเวอร์ชั่นที่ เรียก api google จาก ทางฝั่ง client เลยได้หรือเปล่าครับ ผมจะได้ช่วยเอาไปโฆษณาต่อได้ด้วย
12.
mrgill | December 12, 2009 at 12:51 PM
version ที่ผมเขียนขึ้นมานี้เป็น php ครับมันจึงต้องการ web server ในการรัน เมื่อคืนลองดู python แล้วก็ไม่ยากเดี่ยวว่างๆ จะเขียนมาให้ได้ใช้กันครับ
13.
mrgill | December 12, 2009 at 11:37 PM
ใครใช้ FreeBSD ลองทำตามวิธีนี้ดูครับ
ผมลองบน FreeBSD 8.0
ติดตั้ง wget โดย
pkg_add -r wget
แล้วก็เข้าไปแก้ไข header ของ script จาก
#!/bin/bash
เป็น
#!/bin/sh
จากนั้นรัน script โดย
./observman.sh
เข้าไปดูใน calendar มี event ใหม่เข้ามาครับ รอครู่นึงก็มี sms มาจาก google
14. Shell Script แจ้ง&hellip | December 13, 2009 at 4:29 AM
[...] Views สวัสดีครับต่อยอดจากเรื่อง Server Down รู้ได้ทันทีผ่าน SMS แถมฟรี ที่เขียนไว้วันก่อน [...]
15.
dekdar | December 13, 2009 at 4:54 PM
แจ่มครับ สำหรับเจ้า FreeBSD อิอิอิ
16.
gap | December 16, 2009 at 10:36 PM
google จะเคืองไหมเนี่ย
17.
surprise | December 24, 2009 at 9:47 AM
ผมทดลองแล้ว มันไม่ทำงาน ไม่มีการแจ้งเตือน ครับ
18.
surprise | December 28, 2009 at 1:14 PM
ผมเช็ค username password แล้วถูกต้องทุกอย่าง แต่ไม่ทำงานครับ
19.
ORIGINAL-RU | January 18, 2010 at 7:26 PM
สุดยอดจริงๆ
ผมลองบน Ubuntu Server 10.04 แล้ว!!! ใช้ได้ครับพี่น้อง
ส่ง SMS ได้จริง
20.
mrgill | January 18, 2010 at 9:44 PM
ทดสอบกับระบบ 1-2-Call, DTAC และ Truemove แล้ว ผ่านหมดครับ
21.
smorai | January 30, 2010 at 4:47 PM
OK เยี่ยมเลย… แต่ว่าทำไงให้เตือนครั้งเดียวพออ่ะ คือรับ SMS แล้วแต่ยังไม่มีเวลาไปดู แฮ่ะ ๆๆ เตือนทุก 15 นาทีเลย
***คือลอง remote เข้าไป down server ตัวนึงอ่ะ
22.
mrgill | February 2, 2010 at 7:49 PM
คงต้องโทรไปบอกให้ IDC reset เครื่องให้อะครับ
23.
kaiyakit | February 5, 2010 at 3:59 PM
ไม่ได้คับ ลองกับ centos 5.4
24.
dinsokhaao | February 12, 2010 at 8:01 PM
1. ลอง กับ FC8 ไม่ส่งครับ แต่เมื่อ run script มี message ว่า server down แต่ใน event google ไม่มีครับ DTAC (ลองแก้ #!bin/bash เป็น #!bin/sh แล้วครับ)
25.
mrgill | February 14, 2010 at 11:21 AM
ต้องมีอะไรผิดพลาดครับ เพราะยังไม่มี event เข้า google calendar และ sms จะส่งก็ต่อเมื่อมี event add เข้าไป
26.
kaiyakit | February 19, 2010 at 12:11 PM
ทำตามสเต็บแล้วไม่ได้คับ ผมใช้ centos 5.4 ทดสอบรันสคริป มันขึ้น
[root@slav2 ~]# ./observman.sh
-bash: ./observman.sh: /bin/bash^M: bad interpreter: No such file or directory
เหมือนรันไฟล์ไม่ผ่านคับ
ทดสอบ (ลองแก้ #!bin/bash เป็น #!bin/sh แล้วครับ)ก็ไม่ได้
27.
mrgill | February 19, 2010 at 1:00 PM
ลอง whereis ดูครับ
จาก error ที่คุณใส่มาเหมือนจะมี ^M ต่อท้ายอยู่ข้างหลัง #!/bin/bash หรือเปล่า
28.
kaiyakit | February 20, 2010 at 10:41 AM
ได้แล้วคับ ใช้ตัวสคริป ดาวน์โหลดตามนี้นี้คับ http://imrgill.com//wp-content/uploads/2009/observman.tar.bz2 หรือ
wget http://imrgill.com//wp-content/uploads/2009/observman.tar.bz2 เลยก็ได้คับ
จากนั้น แตกไฟล์ tar jxvf xxx.tar.bz2
แล้วก็แก้ไข ทำตามสเต็ปบทความด้านบนเลยคับ ได้แล้วคับ
ขอบคุณท่านเจ้าของบทความ ที่ให้คำปรึกษาช่วยแก้ให้คับ
29.
Boyd | March 8, 2010 at 9:23 AM
มีวิธีผ่าน win 2003 r2 ไหมครับ
30.
mrgill | March 8, 2010 at 9:42 AM
ลองคิดในแง่ programming ดูครับ อย่าคิดแต่ในทาง os จริงๆ script ตัวนี้เป็นเพียงการส่งค่าไปให้ php เท่านั้นเอง ซึ่งมีวิธีมากมายที่สามารถทำแบบนี้ได้
31.
por | March 19, 2010 at 11:26 AM
มาถึงวันนี้มันยัีงส่งได้ไหมเนี่ย 19/03/10 เพราะผมลองแล้ว
ใส่ใน calendar ตรงๆมันส่ง sms แต่สั่งผ่าน script มันไม่ส่ง
ดู script ก็ดูจะรันปกติดีครับ..
—-
32.
por | March 19, 2010 at 1:27 PM
ผมรู้ละ password ไม่ควรมีเครื่องหมายนี้ ‘
ผ่านละครับขอบคุณมากมายเลยครับผม
33. X Server Down รู้&hellip | April 8, 2010 at 4:38 PM
[...] ก่อนอื่นต้องขอขอบคุณเจ้าของบทความครับ imrgill.com [...]
34.
wutty | April 28, 2010 at 2:29 PM
ช่วยครับ ผม run ไม่ผ่านครับ มันขึ้นบันทัดสุดท้ายว่า
บันทัดก่อนหน้านี้ มัน run https:imrgill.com/gsms.php ผ่านนะ
!!!
ไม่ผ่านตรงนี้
Resolving imrgill.com… failed:name or service not known.
wget:unable to resolve host address ‘imrgill.com’
35.
mrgill | April 28, 2010 at 6:48 PM
เครื่องนั้นออกเน็ตได้หรือเปล่าครับ ถ้าออกได้ dns อาจมีปัญหา หรือ hosting ที่ผมใช้บริการอยู่อาจมีปัญหา
36.
iqcang | May 18, 2010 at 1:35 PM
ขอบคุณครับ api ผ่านแล้ว เรียก url ตรง ๆ ผ่านแล้ว ผมลองก๊อปสคิปไปใส่ในเร้าเตอ wrt54gl ที่เป็น tomato ไม่ผ่านอ่ะครับ เหมือนมันไม่ติดต่อ ไปยัง api server ไม่ทราบว่ามันใช้ได้ไหมรึว่าต้องเป็นลินุกอย่างเดียว
37.
mrgill | May 18, 2010 at 10:24 PM
ผมไม่แน่ใจว่า tomato มีคำสั่ง wget หรือเปล่า ถ้ามีก็ลอง man ดูครับไม่แน่ใจว่าจะใช้ option ได้เหมือนกันหรือเปล่า
38.
iqcang | May 19, 2010 at 11:30 AM
มี wget แต่ไม่มี man ครับ มันเรียก man wget ไม่ขึ้น แล้ว ก็ไม่มี crontab ครับ -*-
ตอนนี้ เอาไฟล์ไปไว้ในเร้าเตอแล้วครับ /tmp/observman.sh แต่ไม่รู้สั่งรันยังไง เพราะว่า crontab ไม่ได้ครับ แล้วลอง telnet ไป สั่งเฉพาะบรรทัด wget –foce~~~~~ มันก็ไม่มีออฟชั่นฟอส -*-
สงสัยต้องเปลี่ยน ไปไว้ที่อื่น
ขอบคุณมากเลยครับทั้งความรู้และแนวทาง จะพยายามต่อไปครับ ฮ๋า ๆ
39.
iqcang | May 19, 2010 at 2:25 PM
ผมไปลบออฟชั่น ของ wget ออกตอนนี้ส่งได้แล้วครับ กลายเป็น wget “URL”
แต่เหมือนมันเชคครั้งเดียว ตอนที่reboot เร้าเตอเสร็จ พอแกล้งไปเปลี่ยนไอพี ไป ๆ มา ๆ หลังจากนั้นมันไม่ได้เชคแบบ realtime สงสัยเพราะว่ายังไม่ได้สั่ง crontab มั่งครับ -*- ในเร้าเตอร์ไม่มีชุดคำสั่งอ่า เลยตั้งเวลาเชคไม่ได้
40.
mrgill | May 19, 2010 at 6:30 PM
ไฟล์ใน /tmp จะหายถ้า reboot นะครับ
วิธีตั้ง crontab ลองศึกษาจากที่นี้ดูครับ
http://www.dd-wrt.com/wiki/index.php/CRON
41.
iqcang | May 20, 2010 at 9:12 AM
มันเป็น busybox 1.14 อ่ะครับ ไม่มี cron หรือ crontab แต่ว่ามีคำสั่ง cru แทน ผมก็เพิ่มเข้าไปแล้ว แล้วก็ chmod ไฟล์ .sh 0755
แล้วก็ /var/spool/cron/crontabs/root 0755
พอรีบูตเร้าเตอร์ ทุกอย่างหายกลับเป็นเหมือนเดิมหมดเลยครับ
แนวทางไหมครับรบกวนชี้แนะด้วย ขอบพระคุณมากครับ
42.
jarupong | June 6, 2010 at 11:19 PM
load scip ไม่ได้ errors
43.
nun | June 21, 2010 at 8:21 PM
โหลด Scip ไม่ได้อ่ะค่ะ
44.
mrgill | June 22, 2010 at 8:21 AM
http://imrgill.com//wp-content/uploads/2009/observman.tar.bz2 ลองตามนี้ดูครับ
Leave a Comment
XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>
TrackBack URL | RSS feed for comments on this post.