Python script to check the internet connectivity

17-May-23

คัมภีร์เทพ IT

See the original english version Click here!

 

ปัจจุบัน ไม่ว่าจะแวดวงธุรกิจหรือการใช้ชีวิตประจำวันของนมุษย์ต่างพึ่งพา Internet กันทั้งสิ้น หาก Internet เกิดปัญหา ย่อมส่งผลกระทบกับแทบจะทุกแวดวง สำหรับบทความนี้ เรามาดู Python Script เพื่อตรวจสอบการเชื่อมต่อของ Internet กัน

สำหรับ Script นี้ มีประโยชน์อย่างยิ่งในสถานการณ์ต่าง ๆ ที่จำเป็นต้องทราบว่า Internet กำลังเชื่อมต่ออยู่หรือไม่ เช่น

  • Automated testing: เมื่อมีการ Run Automated Tests สำหรับ Application ที่ต้องการการเชื่อมต่อของ Internet สามารถใช้ Script นี้ เพื่อตรวจสอบว่า Internet กำลังเชื่อมต่ออยู่หรือไม่ก่อนที่จะ Run Tests หาก Internet ไม่ได้มีการเชื่อมต่อ Script นี้สามารถหยุดการ test ไม่ให้ทำงานและรายงานปัญหาให้ทราบได้
  • Monitoring: Script นี้สามารถใช้เพื่อตรวจสอบการเชื่อมต่อของ Internet เป็นระยะ และส่งการแจ้งเตือนหาก Internet ถูกตัดจากการเชื่อมต่อ สิ่งนี้มีประโยชน์มากสำหรับการตรวจสอบสถานะของการเชื่อมต่อของ Internet ใน Network หรือ System
  • Diagnostics: หาก Application หรือ System ไม่ทำงานตามที่คาดไว้ และคุณสงสัยว่าการเชื่อมต่อของ Internet อาจเป็นปัญหา ก็สามารถใช้ Script นี้เพื่อตรวจสอบอย่างรวดเร็วว่า Internet กำลังเชื่อมต่ออยู่หรือไม่ หาก Internet ถูกตัดจากการเชื่อมต่อ Script นี้สามารถช่วยแก้ไขปัญหาได้
  • Scripting: Script นี้สามารถใช้ใน Script ที่มีขนาดใหญ่กว่า หรือ Automation Process ที่อาศัยการเชื่อมต่อ Internet ซึ่งสามารถช่วยดำเนินการต่อเนื่องหรือหยุด Process ได้ ซึ่งขึ้นอยู่กับสถานะการเชื่อมต่อของ Internet

โดยทั่วไป Script นี้ มีประโยชน์ในทุกสถานการณ์ที่คุณจำเป็นต้องทราบสถานะของการเชื่อมต่อของ Internet และดำเนินการตามความเหมาะสมตามผลลัพธ์

และนี่ก็คือ Python Script เพื่อตรวจสอบการเชื่อมต่อของ Internet

สำหรับ Script นี้มี Try-Except Blocks ที่ตรวจจับ Exceptions ประเภทต่าง ๆ และ Print Error Message พร้อมทั้งแก้ไข Exception นั้น

ใน Script นี้ มีการ Import sys Library และใช้ sys.exit() Method เพื่อ Set Exit Status ของ Script สำหรับ sys.exit(0) Method ถูกใช้เพื่อระบุว่า Script ทำงานเสร็จสมบูรณ์แล้ว และมีการเชื่อมต่อ Internet แล้ว สำหรับ sys.exit(1) Method ถูกใช้เพื่อระบุว่า Script ทำงานเสร็จสมบูรณ์แล้ว แต่ไม่ได้มีการเชื่อมต่อ Internet

Exit Status สามารถตรวจสอบได้โดยการ Run Script และตรวจสอบค่าของ Shell Variable $? หลังจาก Script เสร็จสิ้น ซึ่งถูก Set ค่าให้เป็น Exit Status ตัวอย่างเช่น ถ้า Script ถูก Run และ Internet กำลังถูกเชื่อมต่อ ค่าของ $? จะเป็น 0 แต่หาก Internet ไมได้ถูกเชื่อมต่อ ค่าของ $? ก็จะเป็น 1

คุณยังสามารถใช้ Exit Status ใน Terminal ของคุณ เพื่อตัดสินใจว่า จะ Run คำสั่งอื่นต่อไปหรือไม่ ซึ่งก็ขึ้นอยู่กับการเชื่อมต่อของ Internet 

ต่อไปนี้ เป็นรายละเอียดเพิ่มเติมเกี่ยวกับการทำงานของ Script ในแต่ละส่วน:

  1. import requests : requests Library ถูก Import เข้ามา ซึ่งอนุญาตให้ Script ส่ง HTTP Requests ไปยัง Websites
  2. import socket : socket Library ถูก Import เข้ามา ซึ่งถูกใช้เพื่อตรวจจับ socket.timeout exception
  3. import sys : sys Library ถูก Import เข้ามา ซึ่งอนุญาตให้ Script มีการโต้ตอบกับ System และ Set ค่า Exit Status ของ Script
  4. def check_internet_connectivity(): : มีการกำหนด Function ที่ชื่อว่า check_internet_connectivity โดย Function นี้ถูกใช้เพื่อตรวจสอบว่า Internet กำลังเชื่อมต่ออยู่หรือไม่ โดยพยายามเชื่อมต่อกับ Website ใด Website หนึ่งโดยเฉพาะ (ซึ่งในกรณีนี้คือ Google.com)
  5. requests.get('http://www.google.com', timeout=5) : Code บรรทัดนี้ พยายามส่ง GET Request ไปยัง www.google.com และหากสำเร็จ Script จะ Return ค่า True แสดงว่า มีการเชื่อมต่อ Internet อยู่ Timeout Parameter ถูก Set ค่าเป็น 5 วินาที ซึ่งหมายความว่า หาก Request ใช้เวลานานเกินกว่า 5 วินาที กว่าจะเสร็จสมบูรณ์ socket.timeout exception ก็จะถูกดำเนินการ
  6. except requests.ConnectionError as e: : Code Block นี้จะตรวจจับ requests.ConnectionError exception ซึ่งจะถูกแสดงออกมา เมื่อไม่สามารถสร้างการเชื่อมต่อกับ Website ได้
  7. print(f"Loss of connectivity: {e}") : Code บรรทัดนี้จะ Print Error Message ไปยัง Console ซึ่งสามารถให้แนวทางเกี่ยวกับสาเหตุของการสูญเสียการเชื่อมต่อ
  8. print("Possible fixes:") : Code บรรทัดนี้จะ Print Message ไปยัง Console ซึ่งแนะนำการแก้ไขที่เป็นไปได้ สำหรับการสูญเสียการเชื่อมต่อ
  9. return False : Code บรรทัดนี้จะ Return ค่าของ False ซึ่งแสดงว่า Internet ไม่ได้ถูกเชื่อมต่ออยู่
  10. except socket.timeout as e: : Code Block นี้จะตรวจจับ socket.timeout exception ซึ่งจะถูกแสดงออกมา เมื่อการเชื่อมต่อไปยัง Website ใช้เวลาที่นานเกินกว่าปกติ
  11. except requests.ConnectTimeout as e: และ except requests.ReadTimeout as e: : Code Block นี้จะตรวจจับ requests.ConnectTimeout และ requests.ReadTimeout exception ตามลำดับ ซึ่งจะถูกแสดงออกมา เมื่อการเชื่อมต่อ หรือการ Read ไปยัง Website ใช้เวลาที่นานเกินกว่าปกติ ตามลำดับ
  12. if check_internet_connectivity(): : Code บรรทัดนี้ จะตรวจสอบว่า Function check_internet_connectivity() มีการ Return ค่าเป็น True หรือไม่ ถ้าใช่ มันก็จะ Print ข้อความ "Internet is connected." มาให้
  13. sys.exit(0) : Code บรรทัดนี้ จะถูกใช้เพื่อ Set ค่า Exit Status ของ Script ให้เป็น 0 ซึ่งเป็นการบ่งบอกว่า Script เสร็จสมบูรณ์แล้ว และมีการเชื่อมต่อ Internet แล้ว
  14. sys.exit(1) : Code บรรทัดนี้ จะถูกใช้เพื่อ Set ค่า Exit Status ของ Script ให้เป็น 1 ซึ่งเป็นการบ่งบอกว่า Script เสร็จสมบูรณ์แล้ว แต่ Internet ไม่ได้ถูกเชื่อมต่อ
  15. if check_internet_connectivity(): : Code บรรทัดนี้ จะตรวจสอบว่า Function check_internet_connectivity() มีการ Return ค่าเป็น False หรือไม่ ถ้าใช่ มันก็จะ Print ข้อความ "Internet is not connected." มาให้

สิ่งสำคัญก็คือ ต้องสังเกตว่า Script จะ Print Error Message และการแก้ไข (ที่เป็นไปได้) สำหรับการสูญเสียการเชื่อมต่อนั้น โดยไม่คำนึงถึง Exit Status ของ Script

ที่มาhttps://endasheridan.medium.com/

 

 

รับตำแหน่งงานไอทีใหม่ๆ ด้วยบริการ IT Job Alert

 

อัพเดทบทความจากคนวงในสายไอทีทาง LINE ก่อนใคร
อย่าลืมแอดไลน์ @techstarth เป็นเพื่อนนะคะ

เพิ่มเพื่อน

 

บทความล่าสุด