ทำ Automation งานประจำด้วย Python และ Cron
คุณเบื่อไหมกับการต้องทำงานเดิมซ้ำ ๆ ทุกวัน เช่น โหลดรายงาน, ส่งอีเมล, สำรองข้อมูล ฯลฯ? หากใช่ — ถึงเวลาแล้วที่คุณจะให้ Python และ Cron มาช่วยชีวิต!
Automation คืออะไร?
Automation หมายถึง การทำให้ระบบหรือคอมพิวเตอร์ทำงานแทนมนุษย์โดยอัตโนมัติ โดยใช้ script หรือโปรแกรมเข้ามาช่วย เช่น การจัดการไฟล์, ส่งอีเมล, สแกนโฟลเดอร์, ดึงข้อมูลจากเว็บ ฯลฯ
ทำไมต้อง Python?
- อ่านง่าย เขียนง่าย
- มีไลบรารีพร้อมใช้ เช่น
smtplib
,pandas
,requests
,schedule
- รองรับทั้ง Windows และ Linux
ทำไมต้อง Cron?
Cron เป็น scheduler ในระบบ Unix/Linux ใช้ในการรัน script อัตโนมัติตามเวลาที่กำหนด เช่น ทุกวันตอนตี 2 หรือทุก ๆ 5 นาที
ตัวอย่างงานที่สามารถ Automate ได้
- โหลดไฟล์รายงานจากเว็บ
- แปลงไฟล์ Excel → PDF
- ส่งอีเมลสรุปรายวัน
- ดึงข้อมูลจาก API
- ย้ายไฟล์ไปยัง Backup Folder
เริ่มเขียน Python Script กันเถอะ!
1. ส่งอีเมลรายงานแบบง่าย
import smtplib
from email.mime.text import MIMEText
msg = MIMEText("รายงานประจำวันที่ 1 กรกฎาคม")
msg['Subject'] = "Daily Report"
msg['From'] = "[email protected]"
msg['To'] = "[email protected]"
s = smtplib.SMTP('smtp.example.com')
s.login("[email protected]", "password")
s.send_message(msg)
s.quit()
2. ดึงข้อมูลจาก API แล้วเซฟเป็นไฟล์
import requests
r = requests.get("https://jsonplaceholder.typicode.com/posts")
with open("report.json", "w") as f:
f.write(r.text)
ตั้งเวลาให้รัน script อัตโนมัติด้วย Cron
เปิด crontab ด้วยคำสั่ง:
crontab -e
เพิ่มบรรทัดนี้ลงไป:
0 9 * * * /usr/bin/python3 /home/user/scripts/daily_report.py
หมายถึง รันทุกวันเวลา 9 โมงเช้า
วิธี Debug Cron ที่ไม่รัน
- ตรวจสอบสิทธิ์ไฟล์ว่า executable หรือไม่
- ใช้ path เต็ม เช่น
/usr/bin/python3
- Redirect log ไปเก็บไว้ตรวจสอบ เช่น:
0 9 * * * /usr/bin/python3 /path/to/script.py >> /var/log/myscript.log 2>&1
เครื่องมือเสริมที่น่าสนใจ
schedule
— ไลบรารีรันงานใน Python แบบง่ายapscheduler
— ตั้งเวลา cron job ภายใน Python เองloguru
— สำหรับ logging ที่อ่านง่าย
ข้อควรระวังในการทำ Automation
- อย่าลืม log เพื่อดูว่า script ทำงานถูกต้อง
- ระวัง script ลูปไม่หยุด
- สำรองข้อมูลก่อนทำ Automation ที่เกี่ยวกับไฟล์
สรุป
การทำ Automation ไม่ใช่เรื่องของ DevOps หรือ SysAdmin เท่านั้น แต่นักพัฒนา, เจ้าหน้าที่ธุรการ, หรือใครก็ตามที่ต้องทำงานซ้ำ ๆ ก็สามารถใช้ Python + Cron มาช่วยได้ทันที
เริ่มจากงานง่าย ๆ เช่น สำรองไฟล์หรือส่งรายงาน แล้วคุณจะพบว่า Automation ทำให้ชีวิตคุณ “เบาลง” อย่างไม่น่าเชื่อ
ภาพประกอบจาก: Unsplash