Learning AtlasIT Support → Cybersecurity
คลังบทอ่าน13.4 / ไพธอนและงานอัตโนมัติบทถัดไป
สารบัญบทอ่าน / Python and Automation / 13.4
04 · เขียนโค้ดและนำระบบไปใช้ · บท 13.4

Automation Implementation

นำไปทำงานอัตโนมัติ

Automation ที่ดีต้องอ่านข้อมูล แปลง ตรวจ แล้วเขียนผลอย่างที่ตรวจซ้ำได้

5 หัวข้อคำอธิบายในหน้านี้ภาพอธิบายและกลไกทีละส่วน
ควรรู้ก่อน: 13.3 ประมวลผลข้อมูล
หัวข้อในบทนี้
ศัพท์ในบทนี้ · กดคำที่ขีดเส้นใต้ในเนื้อหาเพื่อดูความหมายได้ด้วย
IP
ที่อยู่และโปรโตคอลส่ง packet ระหว่างเครือข่าย รุ่น IPv4 และ IPv6 มีรูปแบบต่างกัน
JSON
รูปแบบข้อความของ object array และค่าพื้นฐาน
CSV
รูปแบบข้อมูลตารางข้อความที่มีกฎ delimiter และ quote
จากหลักการไปถึงกลไก

งานอัตโนมัติต้องรู้ทั้งข้อมูลเข้าและผลข้างเคียง

สคริปต์อ่านข้อมูล แปลง ตรวจ และเปลี่ยนปลายทางตามกฎที่กำหนด การอ่านสำเร็จไม่พิสูจน์ว่า parser ตีความถูก และการเขียนสำเร็จไม่พิสูจน์ว่าเนื้อหาที่เขียนตรงเจตนา งานแก้ access list จึงควรแยกคำนวณผลจากการแทนไฟล์จริงเพื่อดูผลก่อน

ลำดับงาน · อ่านตามลูกศรงานอัตโนมัติต้องรู้ทั้งข้อมูลเข้าและผลข้างเคียง
  1. Read

    ระบุพาธ encoding และขอบเขต input ใช้การปิดไฟล์ที่แน่นอน เช่น context manager

  2. Parse

    ตรวจ schema delimiter timestamp และแถวผิดรูปแบบ ระบุว่าจะหยุดหรือข้ามพร้อมเหตุผล

  3. Compute

    คำนวณรายการใหม่โดยไม่แก้ input ระหว่างคำนวณ แยกข้อมูลที่ไม่พบกับข้อผิดพลาด

  4. Preview / test

    เทียบผลที่คาดกับผลจริง รวมข้อมูลว่าง ซ้ำ และผิดรูปแบบ ก่อนเปลี่ยนปลายทาง

  5. Write + verify

    เขียนตามวิธีที่รองรับ เก็บข้อมูลเดิมและตรวจผลอ่านกลับ รวม log ของงาน

Debugging เริ่มจากตำแหน่ง error ค่าที่ส่งและเงื่อนไขที่ทำให้เกิด ไม่ใช่เติม try/except เพื่อกลบทุกปัญหา CI/CD เป็นอีกขั้นที่รันงานตามเหตุการณ์ ต้องมี input permissions และเกณฑ์ผลสำเร็จชัด Script ที่รันได้หนึ่งครั้งยังต้องคิดถึงการรันซ้ำโดยไม่ทำผลซ้ำผิด

01 / 05

อ่านเขียนไฟล์File Reading and Writing · 13.4.1

อ่านเขียนไฟล์ต้องเลือกรูปแบบ encoding และปิดทรัพยากรเมื่อใช้งานเสร็จ

การเปิดไฟล์ต้องระบุ mode และ encoding with ช่วยปิด resource เมื่อจบ read อ่าน write เปลี่ยนเนื้อหา ส่วน mode w จะตัดเนื้อหาเดิมทันทีเมื่อเปิดสำเร็จ

อ่านภาพตามลำดับการทำงาน
01Open

mode path encoding

02Process

อ่านและแปลงข้อมูล

03Close / commit

ปิดและยืนยันไฟล์ผล

ก่อนเขียน allowlist ใหม่ให้อ่านและตรวจข้อมูลทั้งหมด เขียนไฟล์ชั่วคราวแล้วแทนที่ตามวิธีที่เหมาะ อย่าใช้ w กับต้นฉบับก่อนรู้ว่าประมวลสำเร็จ การ backup และ permission เป็นส่วนของงานไฟล์

Read–Transform–Replace (คำนวณผลก่อนแทนไฟล์)

การแก้ไฟล์รายการควรอ่าน input แปลงเป็นโครงที่ตรวจได้ คำนวณผลใหม่และตรวจผลก่อนแทนไฟล์เป้าหมาย การเปิดปลายทางแบบเขียนทับก่อนอ่านต้นฉบับครบอาจทำให้ข้อมูลเดิมหาย แม้ขั้น parse ภายหลังจะผิด

การเขียนไฟล์ชั่วคราวแล้วแทนตามวิธีที่ filesystem รองรับอาจช่วยไม่ให้เห็นไฟล์ครึ่งชุด แต่ต้องดูขอบเขต filesystem สิทธิ์ persistence และการกู้ที่งานต้องการ การ rename ไม่ใช่ transaction ระหว่างทุกไฟล์หรือทุกบริการ และต้องปิดไฟล์กับจัดการ error ให้ชัด

ปิดไฟล์เมื่อจบ
with open("events.txt", "r", encoding="utf-8") as handle:
    for line in handle:
        print(line.rstrip("\n"))

เปิดอ่าน UTF-8 เดินทีละบรรทัด และเอา newline ท้ายออก with ดูแลการปิด handle เมื่อออกจาก block ถ้า encoding ต้นทางต่างต้องเลือกตามข้อมูลจริง

ที่มาของหัวข้อนี้ · 3 รายการ

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

02 / 05

แยกและประมวลผลบันทึกParsing and Log Processing · 13.4.2

Parsing แยกข้อความเป็นข้อมูลที่มีความหมาย ก่อนกรองหรือสรุปเหตุการณ์

Parsing แปลงข้อความดิบเป็น field ที่มีชนิดและความหมาย เช่น timestamp account และ action ต้องรู้ format และเผื่อบรรทัดผิดรูปแบบ แยก parse error จาก event ที่ตรวจพบ

อ่านภาพตามลำดับการทำงาน
01Raw input

ข้อความตามรูปแบบต้นทาง

02Parsed record

field ที่ตรวจชนิดแล้ว

03Analysis

กฎที่ใช้กับข้อมูลที่ parse ได้

Log ใช้ csv reader ใช้ json parser ค่าที่อ่านมาไม่ครบควรเก็บเหตุผลและบรรทัดอ้างอิงโดยปกป้องข้อมูล ไม่หยุดเงียบหรือข้ามแล้วรายงานว่าตรวจครบ

ที่มาของหัวข้อนี้ · 2 รายการ

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

03 / 05

ปรับรายการอนุญาตUpdating Access Lists · 13.4.3

ปรับรายการอนุญาตต้องตรวจข้อมูลซ้ำ รูปแบบ และสิ่งที่ถูกเพิ่มหรือถอน

Access list update เปรียบเทียบชุดเดิมกับรายการเพิ่มหรือลบตามกฎ ทำให้ผลทำซ้ำได้และไม่ลบคนอื่นโดยบังเอิญ ตรวจ duplicate รูปแบบค่า และจำนวนเปลี่ยนก่อนเขียน

อ่านภาพตามลำดับการทำงาน
01Current list

สถานะต้นทาง

02Requested changes

รายการเปลี่ยนที่ตรวจแล้ว

03New list

ผลและส่วนต่างที่ยืนยันได้

ลบ ต้องเทียบค่า IP ทั้งรายการ ไม่แทนข้อความบางส่วนที่อาจตรง IP อื่น งานสำคัญควรมี preview ของ diff และบันทึกผลว่าเพิ่มลบอะไร ใช้ idempotent rule เพื่อ rerun ไม่ทำให้ข้อมูลเสีย

เห็นส่วนต่างก่อนเขียน
current = {"192.0.2.10", "192.0.2.20"}
remove = {"192.0.2.10"}
updated = current - remove
print(sorted(updated))

ผลเหลือ 192.0.2.20 โค้ดนี้ยังไม่แก้ firewall หรือไฟล์ เป็น preview ของการเปลี่ยน set ต้องตรวจรูปแบบ และผู้อนุญาตก่อนนำไป apply

ที่มาของหัวข้อนี้ · คำอธิบายต่อยอด

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

เป็นส่วนต่อยอดที่เขียนเพื่อเชื่อมความเข้าใจ ไม่มีชื่อ Video/Reading เฉพาะที่ยืนยันจาก inventory เดิม

04 / 05

แก้ข้อผิดพลาดDebugging · 13.4.4

Debugging หาสาเหตุจากอาการและจุดที่ค่าผิด ไม่สุ่มเปลี่ยนจนโปรแกรมรันผ่าน

Debugging แยก syntax error, runtime exception และ logic error Traceback บอกเส้นทางเรียกกับจุดล้ม แต่ต้นเหตุอาจเป็น input จากก่อนหน้านั้น สร้างตัวอย่างเล็กที่ทำให้เกิดซ้ำแล้วตรวจค่าตามลำดับ

อ่านภาพตามลำดับการทำงาน
01Reproduce

ทำให้อาการเกิดซ้ำ

02Inspect

ดูค่ากับเส้นทางประมวลผล

03Fix / verify

แก้สาเหตุและตรวจขอบกรณี

IndexError อาจเกิดเพราะ split ได้ field น้อยกว่าที่คาด ไม่ใช่แก้ด้วยการจับ exception แล้วทิ้งทุกบรรทัด ตรวจ format และกำหนดวิธีจัดการข้อมูลไม่ครบให้ชัด

ที่มาของหัวข้อนี้ · 2 รายการ

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

05 / 05

ภาพรวมงานอัตโนมัติในซีไอซีดีCI/CD Automation Overview · 13.4.5

Automation ใน CI/CD เรียกงานตรวจหรือส่งมอบตามเหตุที่กำหนด ต้องรู้ input และผลลัพธ์

CI รันขั้นตอนตรวจเมื่อโค้ดเปลี่ยน CD จัดเตรียมหรือส่งรุ่นที่ตรวจแล้วตามนโยบาย งาน Python อาจอยู่ใน pipeline เพื่อ validate config วิเคราะห์ log หรือสร้าง report ไม่ใช่ทุก script ที่ควร deploy อัตโนมัติ

อ่านภาพตามลำดับการทำงาน
01Change

โค้ดหรือ configuration ใหม่

02Automated checks

ตรวจพฤติกรรมและคุณภาพ

03Controlled release

นำรุ่นที่ผ่านไปใช้

สคริปต์ทดสอบ parser ควรไม่ต้องมีข้อมูลรับรอง production แยก read-only analysis จากขั้นตอนเขียนระบบจริง และให้ pipeline หยุดเมื่อการตรวจที่จำเป็นไม่ผ่าน

ที่มาของหัวข้อนี้ · 1 รายการ

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

เชื่อมความเข้าใจ

นำศัพท์มาเชื่อมกับงาน

ตัวอย่างให้เห็นภาพ

สร้างรายการ IP ใหม่จากไฟล์ต้นฉบับ แล้วเทียบความต่างก่อนนำไปใช้จริง

สิ่งที่บทนี้เชื่อมไว้

Automation ที่ดีต้องอ่านข้อมูล แปลง ตรวจ แล้วเขียนผลอย่างที่ตรวจซ้ำได้

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

บันทึกในเบราว์เซอร์นี้
บทเรียนที่เกี่ยวข้องและที่มาของบทอ่าน

คำอธิบายหน้านี้เขียนใหม่ตามหัวข้อใน Atlas รายการด้านล่างเป็นชื่อ Video/Reading ที่เคยจับคู่ไว้ แสดงไว้ให้ตรวจที่มาของชื่อหัวข้อ และไม่รับรองว่าคอร์สสอนทุกส่วนของคำอธิบายนี้

Python · Tutorial ↗