นโยบายการจัดการความรู้ มหาวิทยาลัยสงขลานครินทร์ 1.ให้ใช้เครื่องมือการจัดการความรู้ผลักดัน คุณภาพคน และกระบวนทำงาน 2.ส่งเสริมการแลกเปลี่ยนประสบการณ์การทำงาน จากหน้างาน 3.ส่งเสริมให้มีเวทีเรียนรู้ร่วมกัน
อ่าน: 125
ความเห็น: 0

การแจ้งเตือน การ Login SSH Linux Server ด้วย LINE Notify [C]

LINE ยังมีบริการอันหนึ่ง สามารถขอใช้บริการได้ฟรี นั่นคือ การใช้ LINE Notify ที่ให้ผู้พัฒนาโปรแกรมนำไปใช้งานเพื่อเรียกผ่าน API Service ให้ส่งข้อความบางอย่างไปหาผู้ใช้งานได้ ซึ่งมีประโยชน์อย่างมาก

สวัสดีครับ

บทความนี้จะเป็นการนำเสนอวิธีการแจ้งเตือน การ Login SSH Linux Server ด้วย LINE Notify ซึ่งในปัจจุบัน LINE เป็น Application ที่ได้รับความนิยมมากในการสื่อสาร พูดคุยกัน ส่งสติกเกอร์หากัน พูดคุยกันด้วยอักษรภาพ ก็สามารถเข้าใจกันได้ ;)

นอกจากนี้ LINE ยังมีบริการอันหนึ่ง สามารถขอใช้บริการได้ฟรี นั่นคือ การใช้ LINE Notify ที่ให้ผู้พัฒนาโปรแกรมนำไปใช้งานเพื่อเรียกผ่าน API Service ให้ส่งข้อความบางอย่างไปหาผู้ใช้งานได้ ซึ่งมีประโยชน์อย่างมาก

เกริ่นกันมาพอสมควร ก็จะขอเข้าเรื่องกันเลยนะครับ

สิ่งที่สำคัญและจำเป็นต้องทราบก่อนที่จะเริ่มขั้นตอนต่อไปก็คือ

- ต้องมีอีเมลที่ผูกกับ LINE เพื่อสำหรับ Login ที่หน้าของ https://notify-bot.line.me/en/ ในการขอ Token ที่จะมาผูกกับโปรแกรมที่เราพัฒนา

- เครื่อง Linux Server ที่มีระบบปฏิบัติการ คือ Linux Ubuntu 16.x, 18.x, 20.x และ Linux CentOS 7.x, 8.x 

- ความรู้พื้นฐานเกี่ยวกับการใช้งาน และการเขียน Shell Script เพราะต้องนำไปใช้ในการจัดการที่เครื่อง Linux Server

มาเริ่มกันเลยนะครับ

1. ให้เข้าไปที่ https://notify-bot.line.me/en/ เพื่อขอ Token ก่อนโดยให้ทำตามขั้นตอนจากคู่มือนี้ครับ [Download]

2. ก่อนเริ่มเขียน Shell Script ให้เราตรวจสอบชื่อ Network Interface ที่ใช้งานก่อนว่ามีการตั้งชื่อว่าอะไร ตรงนี้สำคัญเพราะเราต้องนำชื่อ Network Interface ไประบุใน Shell Script ด้านล่างด้วยเพื่อให้โปรแกรมทำงานได้อย่างถูกต้อง วิธีการมีดังนี้

2.1 ให้ใช้คำสั่งเพื่อดูการตั้งค่า Network Interface ดังนี้

ifconfig

2.2 ให้ดูว่า Network Interface ไหนเป็นอันที่เราใช้งานอยู่จริง จากรูปจะเห็นว่า Network Interface ที่เราใช้งานอยู่ชื่อ ens160 มี IP Address คือ 192.168.105.30
ข้อสังเกตุง่าย ๆ คือ หากชื่อโดเมนจดอยู่กับ IP Address อะไรก็จะใช้ Network Interface อันนั้น หรือถ้าไม่มีการจดชื่อโดเมนก็จะเป็น IP Address ที่เราใช้รีโมทเข้าไปจัดการเครื่อง Server ด้วยวิธีการ SSH นั่นเอง ส่วน 127.0.0.1 นั้นเป็น IP Address ที่ใช้งานภายในเครื่องเท่านั้น

3. ขั้นตอนต่อไปจะมาเริ่มเขียน Shell Script เพื่อนำไปวางที่เครื่อง Linux Server

4. ไฟล์ที่ต้องแก้ไขอยู่ที่ /etc/profile ซึ่งเป็นไฟล์ที่เอาไว้จัดการสภาพแวดล้อมของผู้ใช้ และ Startup โปรแกรม หลังจากที่ login เข้ามา ให้ทำการเปิดไฟล์ /etc/profile เพื่อแก้ไข โดยใช้ Editor ที่ถนัดในที่นี้จะใช้ vim เป็น Editor ในการแก้ไข ดังนี้

sudo vim /etc/profile

5. ให้นำ Shell Script นี้ไปวางที่ด้านล่างสุดของไฟล์ ดังตัวอย่างตามรูปด้านล่าง

#Shell Script Send User Login to LINE Notify

MYTOKEN="Your Token"
MYHOST=`hostname`
#for ubuntu version 16.x
#MYIP=`/sbin/ifconfig ens160 | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1}'`
#for ubuntu version 18.x, 20.x | centos 7.x, 8.x
MYIP=`/sbin/ifconfig ens160 | grep "inet " | awk '{print $2}'`
sshlog=`last -1 | grep 'logged in'`
curl -X POST -H 'Authorization: Bearer '$MYTOKEN'' -F 'message=Server "'"$MYHOST ($MYIP)"'" System Log: "'"$sshlog"'"' https://notify-api.line.me/api/notify > /dev/null 2>&1

#End

5.1 ให้นำ Token ที่ได้จากข้อ 1 ด้านบนมาระบุไว้ภายใต้ "" ในบรรทัดที่เขียนว่า

MYTOKEN="Your Token"

5.2 ให้นำชื่อ Network Interface ที่ใช้งานจากข้อ 2 ด้านบน แก้ไขในไฟล์ Shell Script บรรทัดที่เขียนว่า

MYIP=`/sbin/ifconfig ens160 | grep "inet " | awk '{print $2}'`

**ens160 คือ ชื่อ Network Interface ที่ต้องแก้ไขให้ตรงกับที่เครื่อง Server เราใช้งาน

คำอธิบายโค้ดโปรแกรม

MYTOKEN คือ ตัวแปรที่เก็บค่า Token ที่ได้มาจากข้อ 1

MYHOST คือ ตัวแปรที่เก็บค่าชื่อเครื่อง Server

MYIP คือ ตัวแปรที่เก็บค่าไอพีแอดเดรสของเครื่อง Server จะสังเกตว่าจะมี 2 ชุด ขอให้เลือกใช้ตามเวอร์ชั่นของระบปฏิบัติการที่ใช้ ที่เป็นเช่นนี้ก็เพราะว่าเวอร์ชั่นที่ต่างกันวิธีการที่จะได้มาซึ่งเลขไอพีก็ต่างกัน ก็ขอให้เลือกใช้ให้ถูกต้อง

sshlog คือ ตัวแปรที่ใช้เก็บสถานะการ login ล่าสุด จะประกอบไปด้วย ชื่อผู้ทำการ login, หมายเลขไอพีของผู้ทำการ login, วันที่และเวลา

curl -X POST -H 'Authorization: Bearer... คือ คำสั่งของ curl ที่ใช้ในการติดต่อไปยัง LINE API และส่งค่า Token, Message ที่ต้องการไปผู้ใช้งาน


6. บันทึกไฟล์ /etc/profile จากนั้นลอง Login โดยใช้ SSH เข้ามายังเครื่อง Linux Server ถ้าไม่มีอะไรผิดพลาด ก็จะมีข้อความส่งเข้ามาแจ้งเตือนทาง LINE

บทสรุปส่งท้าย

- ปัจจุบัน LINE Notify เป็นเครื่องมือที่ได้รับความนิยมอย่างมาก ด้วยความที่ API Service ของ LINE Notify ไม่ได้มีความยุ่งยากในการขอและเรียกใช้งาน จึงมีผู้นำเครื่องมือตัวนี้ไปใช้งานอย่างแพร่หลาย เรามักจะเห็นผู้พัฒนา Software  ผูกติด Feature ที่ใช้ในการส่งข้อความแจ้งเตือนไปทาง LINE ของผู้ใช้ด้วยเสมอ วิธีการในบทความนี้ก็เป็นตัวอย่างหนึ่ง ที่สามารถเอาเทคโนโลยีนี้มาประยุกต์กับการทำงานได้ด้วย

- หลักการทำงานของ Shell Script นี้ก็ไม่ได้มีอะไรมาก ก็เพียงแค่ว่า เราต้องการที่จะส่งข้อความบางอย่างมาเพื่อให้ผู้ดูแลระบบทราบว่า ขณะนี้มีผู้ใช้ท่านใดที่กำลัง login เข้ามาบ้าง มาจากหมายเลขไอพีใด วันไหน เวลาใด โดยใช้เครื่องมือที่ใน Linux มีมาให้ จากนั้นก็นำข้อมูลทั้งหมดส่งแจ้งไปทาง LINE ดังนั้นจึงขึ้นอยู่ผู้ดูแลแต่ละท่านว่าต้องการอยากทราบข้อมูลอะไรก็เขียนเพิ่มเติมเข้าไปได้ การใช้เครื่องมือก็เป็นความถนัดของแต่ละท่าน บางท่านอาจจะนำข้อความจาก log ของระบบมาใช้ก็สามารถทำได้เช่นกัน

หวังว่าบทความนี้จะเป็นประโยชน์กับผู้ที่อ่าน และสนใจในเรื่อง การแจ้งเตือน การ Login SSH Linux Server ด้วย LINE Notify ไม่มากก็น้อยครับ หากมีข้อผิดพลาดประการใด ก็ขออภัยมา ณ ที่นี้ ด้วยครับ

ขอบคุณครับ

 

อ้างอิง

https://www.youtube.com/watch?v=6OQ_hpm4GxA&t=18s

หมวดหมู่บันทึก: เรื่องทั่วไป
คำสำคัญ (keywords): linux  ssh  login  Line Notify
สัญญาอนุญาต: ซีซี: แสดงที่มา-ไม่ใช้เพื่อการค้า-อนุญาตแบบเดียวกัน Cc-by-nc-sa
สร้าง: 30 พฤศจิกายน 2563 11:26 แก้ไข: 03 ธันวาคม 2563 15:12 [ แจ้งไม่เหมาะสม ]
ดอกไม้
สมาชิกที่ให้กำลังใจ
 
Facebook
Twitter
Google

บันทึกอื่นๆ

ความเห็น

ไม่มีความเห็น
คุณต้องทำการเข้าระบบก่อนแสดงความเห็น