Python automation script: subprocess, pathlib và argparse
Viết script Python gọn, đúng cách: gọi lệnh shell an toàn, xử lý file, parse argument và đóng gói để chạy cron.
subprocess.run thay vì os.system
os.system trả về exit code nhưng không capture output. subprocess.run kiểm soát được stdout, stderr, timeout và raise exception khi lệnh lỗi bằng check=True.
Dùng list argument thay vì string để tránh shell injection: subprocess.run(["ls", "-la", path], check=True) thay vì subprocess.run(f"ls -la {path}", shell=True).
- subprocess.run với check=True
- capture_output=True khi cần output
- timeout để tránh hang vô tận
- Không dùng shell=True với input từ người dùng
Bước tiếp theo
Nếu áp dụng vào dự án thật, hãy bắt đầu bằng phiên bản nhỏ nhất có thể đo được, ghi lại quyết định kỹ thuật, rồi cải tiến dựa trên log và phản hồi người dùng.