Programming
น้องๆ หลายคนอาจจะสงสัยว่า Python Automation สำหรับ IT Admin มันคืออะไร? ง่ายๆ เลยนะ มันคือการใช้ภาษา Python เขียน script เพื่อทำงาน routine ที่ IT Admin ต้องทำเป็นประจำ สมัยผมทำร้านเน็ต SiamCafe เนี่ย งานจุกจิกเยอะมาก ตั้งแต่ restart router, monitor server, create user account, backup database ยัน generate report สารพัด ถ้าต้องมานั่งคลิกๆ พิมพ์ๆ เองทุกวัน ตายแน่ๆ!
Python เข้ามาช่วยตรงนี้แหละ! เขียน script ทีเดียว สั่งรันได้เลย ไม่ต้องเสียเวลาทำซ้ำๆ แถมโอกาสผิดพลาดก็น้อยลงเยอะมากๆ ลองคิดดูนะ สมมติว่าน้องต้อง create user account ให้พนักงานใหม่ 50 คน ถ้าทำมือ อาจจะมีพิมพ์ username ผิดบ้าง password ผิดบ้าง แต่ถ้าใช้ Python script มันจะเป๊ะทุก account!
แล้วทำไมมันถึงสำคัญ? นอกจากประหยัดเวลาแล้ว มันยังช่วยให้เราโฟกัสกับงานที่สำคัญกว่าได้ เช่น การวางแผน infrastructure, การแก้ปัญหาที่ซับซ้อน, หรือการเรียนรู้เทคโนโลยีใหม่ๆ แทนที่จะมานั่งทำอะไรซ้ำๆ น่าเบื่อๆ
ก่อนที่จะเริ่มเขียน Python script สำหรับ automation ได้ น้องๆ ต้องมีพื้นฐานเรื่องพวกนี้ก่อนนะ:
อันดับแรกเลย คือต้องเข้าใจ syntax ของ Python ก่อน พวกตัวแปร (variables), loop (for, while), conditional statement (if, else), function, module พวกนี้ต้องคล่องๆ นะ ถ้ายังไม่แม่น ลองไปหา tutorial ใน SiamCafe Blog ดู มีเยอะแยะ!
# ตัวอย่าง Python code
name = "Bom"
age = 45
if age > 30:
print("แก่แล้ว!")
else:
print("ยังหนุ่มอยู่!")
def greet(name):
print("สวัสดี " + name)
greet(name)
IT Admin ส่วนใหญ่มักจะทำงานผ่าน command line เพราะมันเร็วกว่า GUI เยอะ CLI นี่แหละคือเพื่อนแท้ของเรา น้องต้องคุ้นเคยกับการใช้ command line พื้นฐาน เช่น cd, ls, mkdir, rm, cp, mv พวกนี้ต้องใช้เป็นนะ
# ตัวอย่าง command line
ls -l # แสดงไฟล์และ directory ทั้งหมดในรูปแบบ long listing
cd /var/log # เปลี่ยน directory ไปที่ /var/log
น้องต้องเข้าใจการทำงานของ OS ที่น้องใช้ด้วย เช่น Windows, Linux, macOS รู้จักไฟล์ system, process management, user management พวกนี้จะช่วยให้น้องเขียน script ที่ทำงานได้อย่างถูกต้องและมีประสิทธิภาพ
เอาล่ะ มาถึงวิธีใช้งาน Python สำหรับ automation กันบ้าง เริ่มต้นง่ายๆ เลย น้องต้องมี Python interpreter ติดตั้งในเครื่องก่อน ถ้ายังไม่มี ไปโหลดได้จาก python.org เลย
หลังจากติดตั้ง Python แล้ว น้องก็สามารถเริ่มเขียน script ได้เลย ผมแนะนำให้ใช้ text editor ที่มี syntax highlighting เช่น VS Code, Sublime Text, Atom พวกนี้จะช่วยให้น้องเขียน code ได้ง่ายขึ้น
สมมติว่าเราต้องการ monitor CPU usage ของ server เราสามารถใช้ module `psutil` ใน Python ได้
import psutil
import time
while True:
cpu_percent = psutil.cpu_percent(interval=1)
print(f"CPU Usage: {cpu_percent}%")
if cpu_percent > 80:
print("CPU Usage is high!")
time.sleep(5)
Script นี้จะดึง CPU usage ทุกๆ 1 วินาที แล้ว print ออกมา ถ้า CPU usage เกิน 80% มันก็จะแจ้งเตือนด้วย น้องสามารถปรับแต่ง script นี้ให้ส่ง email หรือ SMS แจ้งเตือนได้ด้วยนะ
อีกตัวอย่างหนึ่ง คือการ automate user management ใน Linux เราสามารถใช้ module `subprocess` เพื่อรัน command line ได้
import subprocess
username = "newuser"
password = "password123"
# สร้าง user
subprocess.run(["useradd", username])
# ตั้ง password (อันนี้ไม่ secure เท่าไหร่ ปกติจะใช้ ssh key)
subprocess.run(["passwd", username], input=f"{password}\n{password}\n".encode())
Script นี้จะสร้าง user ชื่อ `newuser` แล้วตั้ง password เป็น `password123` (ใน production environment อย่าทำแบบนี้นะ ควรใช้ ssh key หรือ password management tool ที่ปลอดภัยกว่านี้)
การ backup ไฟล์เป็นงานที่สำคัญมาก เราสามารถใช้ module `shutil` ใน Python เพื่อ automate การ backup ได้
import shutil
import os
import datetime
source_dir = "/path/to/source/directory"
backup_dir = "/path/to/backup/directory"
# สร้าง directory backup โดยใช้ timestamp
timestamp = datetime.datetime.now().strftime("%Y-%m-%d_%H-%M-%S")
backup_path = os.path.join(backup_dir, timestamp)
os.makedirs(backup_path)
# copy ไฟล์ทั้งหมดจาก source ไปยัง backup
try:
shutil.copytree(source_dir, backup_path)
print(f"Backup created successfully at {backup_path}")
except Exception as e:
print(f"Error creating backup: {e}")
Script นี้จะ copy ไฟล์ทั้งหมดจาก `source_dir` ไปยัง `backup_dir` โดยสร้าง directory backup ใหม่ทุกครั้งที่มีการ backup โดยใช้ timestamp เป็นชื่อ directory
แน่นอนว่า Python ไม่ใช่เครื่องมือเดียวที่ใช้ทำ automation ได้ ยังมีทางเลือกอื่นๆ อีก เช่น Bash script, Ansible, Chef, Puppet แต่ละตัวก็มีข้อดีข้อเสียต่างกัน
Bash script เหมาะสำหรับงานง่ายๆ ที่ไม่ต้องซับซ้อนมาก แต่ถ้า script เริ่มยาวและซับซ้อน Bash script จะเริ่ม maintain ยาก Python จะช่วยให้ code อ่านง่ายและ maintain ง่ายกว่า
Ansible, Chef, Puppet เป็น configuration management tool ที่เหมาะสำหรับจัดการ server จำนวนมาก แต่ learning curve จะสูงกว่า Python ถ้างาน automation ของน้องไม่ซับซ้อนมาก Python ก็เพียงพอแล้ว
| เครื่องมือ | ข้อดี | ข้อเสีย | เหมาะกับ |
|---|---|---|---|
| Python | เรียนรู้ง่าย, library เยอะ, code อ่านง่าย | อาจจะไม่เร็วเท่าภาษาอื่นๆ | งาน automation ทั่วไป, script ขนาดกลาง |
| Bash script | ใช้ได้ทันทีบน Linux, เร็ว | maintain ยากถ้า script ยาว, syntax ไม่สวย | งานง่ายๆ, script สั้นๆ |
| Ansible | จัดการ server จำนวนมากได้, idempotent | learning curve สูง | configuration management, deployment |
สุดท้ายแล้ว การเลือกเครื่องมือขึ้นอยู่กับความถนัดและความเหมาะสมกับงาน ถ้ายังไม่แน่ใจ ลองเริ่มจาก Python ก่อนก็ได้ แล้วค่อยๆ เรียนรู้เครื่องมืออื่นๆ เพิ่มเติม
หวังว่าบทความนี้จะเป็นประโยชน์กับน้องๆ นะ ถ้ามีคำถามอะไร ถามมาได้เลย ที่ SiamCafe Blog ยินดีให้คำปรึกษาเสมอ!
ดูวิดีโอเพิ่มเติมเกี่ยวกับPython Automation It Admin:
น้องๆ ที่อยากเอา Python ไปใช้ Automation งาน IT Admin เนี่ย ต้องเริ่มจากทำความเข้าใจก่อนว่า "เราจะแก้ปัญหาอะไร?" อย่าเพิ่งรีบร้อนเขียนโค้ด เพราะเดี๋ยวจะวนในอ่างเปล่าๆ สมัยผมทำร้านเน็ตฯ เจอปัญหาจุกจิกเยอะแยะ ตั้งแต่ปริ้นเตอร์ไม่ทำงาน ยันเครื่องลูกแฮงค์ วิธีแก้ของผมคือ จดปัญหา > หาวิธีแก้ > ทำให้มันอัตโนมัติ
จำไว้ว่า Automation ไม่ใช่ยาวิเศษที่แก้ได้ทุกอย่าง เลือกใช้ให้ถูกงาน อย่างงานที่ต้องทำซ้ำๆ เดิมๆ อันนี้แหละ เหมาะสุดๆ อีกอย่างที่สำคัญคือ "Version Control" ใช้ Git เถอะครับ ชีวิตจะง่ายขึ้นเยอะ เวลาแก้โค้ดพลาด จะได้ย้อนกลับไปแก้ไขได้
เวลาเขียน Script อะไรก็ตาม อย่าลืมใส่ Logging เข้าไปด้วย! เวลา Script รันแล้วมีปัญหา เราจะได้รู้ว่ามันเกิดอะไรขึ้น Log ที่ดี ควรบอกเวลา, ระดับความสำคัญ (Info, Warning, Error), และข้อความที่สื่อความหมาย
import logging
logging.basicConfig(filename='my_script.log', level=logging.INFO,
format='%(asctime)s - %(levelname)s - %(message)s')
try:
# โค้ดที่อาจจะ error
result = 10 / 0
except Exception as e:
logging.error(f"เกิดข้อผิดพลาด: {e}")
logging.info("Script จบการทำงาน")
สมัยก่อนผมไม่ได้ใส่ Logging เวลา Script error นี่นั่งงมเป็นวันๆ กว่าจะรู้ว่าปัญหาอยู่ตรงไหน เสียเวลาสุดๆ
อย่า Hardcode ค่าต่างๆ ไว้ใน Script โดยตรง! ให้อ่านค่าจาก Configuration File แทน เช่น ไฟล์ .ini หรือ .yaml ข้อดีคือ เราสามารถแก้ไขค่าต่างๆ ได้ง่าย โดยไม่ต้องแก้โค้ด
import configparser
config = configparser.ConfigParser()
config.read('config.ini')
db_host = config['database']['host']
db_user = config['database']['user']
db_password = config['database']['password']
print(f"Connecting to {db_host} with user {db_user}")
ลองนึกภาพว่า ถ้าต้องเปลี่ยน Password Database ใน 10 Script แต่ละ Script Hardcode Password ไว้หมด... งานเข้าเลยครับ!
Python มีระบบ Exception Handling ที่ดี ใช้ให้เป็นประโยชน์! ดักจับ Error ที่อาจจะเกิดขึ้น และจัดการมันอย่างเหมาะสม จะ Log Error, ส่ง Email แจ้งเตือน, หรือ Restart Service ก็แล้วแต่สถานการณ์
try:
# โค้ดที่อาจจะ error
response = requests.get("https://www.example.com")
response.raise_for_status() # Check for HTTP errors
except requests.exceptions.RequestException as e:
print(f"Error: {e}")
เคยเจอเคส Script ดึงข้อมูลจาก API แล้ว API ล่ม Script ค้างเติ่งเลย พอใส่ Error Handling เข้าไป Script มันจะพยายามใหม่ หรือไม่ก็ Log Error แล้วแจ้งเตือนเรา
อย่าเขียน Script ยาวเป็นหางว่าว แบ่งโค้ดออกเป็น Module ย่อยๆ แต่ละ Module ทำหน้าที่เฉพาะอย่าง จะทำให้โค้ดอ่านง่าย, แก้ไขง่าย, และนำกลับมาใช้ใหม่ได้ง่าย
# my_module.py
def greet(name):
return f"Hello, {name}!"
# main.py
import my_module
print(my_module.greet("John"))
เหมือนต่อ LEGO ครับ ถ้าเราต่อ LEGO เป็นชิ้นเล็กๆ แล้วค่อยเอามาประกอบกัน มันจะง่ายกว่าพยายามต่อ LEGO ทั้งหมดในคราวเดียว
Python มันง่าย, เรียนรู้ง่าย, มี Library ให้ใช้เยอะแยะ แถมยัง Cross-Platform อีกต่างหาก เขียนครั้งเดียว รันได้ทั้ง Windows, Linux, macOS
งานที่ต้องทำซ้ำๆ เดิมๆ เช่น การจัดการ User Accounts, การ Monitor Server, การ Backup ข้อมูล, การ Deploy Application ... เหล่านี้แหละ Python ช่วยได้เยอะ
ไม่ต้องถึงขั้นเทพครับ แค่เข้าใจ Basic Syntax, Data Types, Control Flow, Function, และ Module ก็พอแล้ว ที่เหลือค่อยๆ เรียนรู้ไป
เพียบเลยครับ! Requests (HTTP requests), Paramiko (SSH), Psutil (System monitoring), Ansible (Configuration management) ... ลองศึกษาดูครับ
SiamCafe Blog มีบทความเกี่ยวกับ Python เยอะแยะ Stack Overflow ก็เป็นแหล่งความรู้ชั้นดี Google ก็ช่วยได้เยอะครับ
Python Automation เป็นเครื่องมือที่ทรงพลังสำหรับ IT Admin ที่อยากทำงานให้ง่ายขึ้น และเร็วขึ้น เริ่มจากทำความเข้าใจปัญหา, วางแผนการแก้ปัญหา, เขียนโค้ด, ทดสอบ, และ Deploy อย่าลืม Best Practices ที่ผมเล่าให้ฟังด้วยนะครับ รับรองว่าชีวิต IT Admin จะดีขึ้นเยอะเลย และถ้าคุณสนใจลงทุนในตลาด Forex อย่าลืมศึกษาข้อมูลให้ดีก่อนตัดสินใจ iCafeForex อาจเป็นทางเลือกหนึ่งของคุณ
| หัวข้อ | คำอธิบาย |
|---|---|
| Logging | บันทึกการทำงานของ Script เพื่อ Debugging |
| Configuration Files | เก็บค่าต่างๆ ไว้ในไฟล์แยก เพื่อความยืดหยุ่น |
| Error Handling | ดักจับ Error ที่อาจจะเกิดขึ้น และจัดการมัน |
| Modularization | แบ่งโค้ดออกเป็น Module ย่อยๆ |