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

Administration Automation

เขียนงานดูแลระบบอัตโนมัติ

สคริปต์ดูแลระบบทำงานกับทรัพยากรจริง จึงต้องรู้ข้อมูลที่รับ สิทธิ์ และการบันทึกผล

4 หัวข้อคำอธิบายในหน้านี้ภาพอธิบายและกลไกทีละส่วน
หัวข้อในบทนี้
ศัพท์ในบทนี้ · กดคำที่ขีดเส้นใต้ในเนื้อหาเพื่อดูความหมายได้ด้วย
CPU
หน่วยประมวลผลที่ทำตามคำสั่งของโปรแกรม
API
ข้อตกลงวิธีที่โปรแกรมเรียกความสามารถหรือข้อมูลของอีกโปรแกรม
จากหลักการไปถึงกลไก

pipeline มีชนิดข้อมูลและตัวตนของงาน

PowerShell cmdlets จำนวนมากส่ง objects ที่มี properties ไม่ใช่แค่ข้อความหน้าจอ Bash เชื่อมเครื่องมือที่มักใช้ streams ของข้อความ ส่วน Python เหมาะกับการจัดข้อมูลและเรียก เลือกภาษาตามระบบ input และงาน ไม่เลือกเพราะต้องเขียนทุกอย่างด้วยภาษาเดียว

ลำดับงาน · อ่านตามลูกศรpipeline มีชนิดข้อมูลและตัวตนของงาน
  1. Collect

    PowerShell Get-Process คืน objects ส่วน output ของ native command อาจเป็นข้อความ

  2. Filter

    Where-Object อ่าน property เช่น CPU การกรองหลัง Format-Table ทำงานกับวัตถุสำหรับแสดงผลแทนต้นฉบับได้

  3. Transform

    Select-Object เลือก properties หรือ Python แปลง schema ส่งข้อมูลตามสัญญาปลายทาง

  4. Schedule

    บัญชี พาธ environment timeout และ overlap ของ task ต้องกำหนด

  5. Record

    เก็บสิ่งที่ทำ ผลและ error อย่างพอใช้ตรวจ โดยไม่เปิดเผยกุญแจหรือข้อมูลเกินจำเป็น

กรอง object ก่อนจัดรูปแบบหน้าจอ
Get-Process | Where-Object { ... } | Select-Object ...
ช่วงข้อมูลที่ส่งต่อสิ่งที่ยังทำได้
Get-ProcessProcess objectsอ่าน properties ที่มี
Where-ObjectObjects ที่ผ่าน predicateคำนวณและเลือก properties ต่อ
Select-ObjectObjects ของ properties ที่เลือกส่งออกข้อมูลตามที่ต้องการ
Format-TableFormatting informationเหมาะกับปลายทางแสดงผล ไม่แทน process object เดิม

ตัวอย่างเป็นแนวคิด pipeline ไม่ใช่คำสั่งพร้อมรัน ส่วน ... ต้องเลือก predicate และ properties ของงานจริง Native command ใน PowerShell อาจส่งข้อความ ไม่ใช่ object แบบ cmdlet

จัดรูปแบบไว้ท้าย pipeline เมื่อทำงานกับ objects งานตามเวลาที่รันพร้อมกันอาจชนไฟล์หรือเปลี่ยนข้อมูลซ้ำ Secrets ต้องมีวิธีอ่านที่จำกัดสิทธิ์และหมุนตามระบบ Logging ไม่เท่ากับ print ทุกค่า และ exit code ต้องสะท้อนผลที่ผู้เรียกใช้ตัดสินได้

01 / 04

ออบเจ็กต์และสคริปต์พาวเวอร์เชลล์PowerShell Objects and Scripts · 14.1.1

PowerShell ส่งต่อออบเจ็กต์ที่มี properties จึงกรองตามคุณสมบัติได้

PowerShell ส่ง object ใน pipeline ไม่ใช่เฉพาะข้อความ Property คือข้อมูลของ object cmdlet จัดการ object และ script ประสานหลายขั้น การ format เพื่อแสดงผลควรอยู่ท้ายเพราะเปลี่ยน object ให้เป็นรูปแบบการแสดง

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

ข้อมูลมี property

02Pipeline

ส่ง object ไป cmdlet ถัดไป

03Presentation

จัดรูปแบบหรือ export ตอนท้าย

Get-Process | Where-Object -gt 10 | Select-Object Name,CPU เลือก process ตาม property แล้วเลือกคอลัมน์ CPU ตรงนี้คือเวลาสะสม CPU ไม่ใช่เปอร์เซ็นต์ปัจจุบัน อ่านความหมาย property ก่อนใช้ตัดสิน

object เดินผ่าน pipeline
Get-Process |
  Where-Object CPU -gt 10 |
  Select-Object Name,CPU

Where-Object กรองจาก property แล้ว Select-Object เลือก property ผลยังเป็น object ใช้ Get-Member ดูโครงสร้างได้ ค่า CPU เป็นเวลาสะสมไม่ใช่ CPU percent ตอนนี้

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

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

เอกสารหลักที่ใช้ตรวจแนวคิดเพิ่มเติม

02 / 04

เขียนสคริปต์แบชBash Scripting · 14.1.2

Bash รวมคำสั่งและควบคุมลำดับ ต้องระวัง quoting และ exit status

Bash ประสาน command ผ่าน text stream ใช้ variable, condition และ loop พร้อม quoting เพื่อรักษาค่าที่มี space หรืออักขระพิเศษ exit status บอกผลสำเร็จตาม contract ของแต่ละ command

เทียบหน้าที่เพื่อไม่สับสน
•Arguments

ค่าที่ส่งให้โปรแกรม

•Streams

stdin stdout stderr

•Exit status

ผลตามที่โปรแกรมกำหนด

ใช้ "$path" เมื่อส่งตัวแปร path เพื่อไม่ให้ split คำเป็นหลาย argument Pipeline ต้องรู้ว่าผลแต่ละขั้นผิดได้อย่างไร อย่าใช้การต่อคำสั่งจาก input ผู้ใช้เมื่อส่งค่าผ่าน argument ได้

quote รักษาค่าเป็น argument เดียว
path="/home/user/My Documents"
printf '%s\n' "$path"

double quote ทำให้ path ที่มี space เป็นค่าเดียว printf แสดงข้อความ ไม่ใช้ eval ที่จะตีความค่าเป็น code

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

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

03 / 04

เอพีไอและจัดการข้อผิดพลาดไพธอนPython APIs and Error Handling · 14.1.3

Python ช่วยเชื่อม API และประมวลผลข้อมูล แต่ต้องจัด timeout และข้อผิดพลาด

Python เหมาะกับการแปลงข้อมูลและเรียก แบบมีโครงสร้าง งาน automation ต้องแยก acquisition validation decision และ write เพื่อให้เห็นจุดผิดกับผลกระทบ

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

รับและตรวจข้อมูล

02Decide

สร้างรายการเปลี่ยน

03Apply / report

เขียนตาม scope และบันทึกผล

ก่อนปิดบัญชีจากรายการ ให้ตรวจข้อมูลครบและตรงองค์กร แล้วสร้าง preview การเปลี่ยน Token ต้องให้สิทธิ์น้อยพอและมี timeout ข้อผิดพลาดระหว่างดึงข้อมูลต้องไม่ถูกตีความว่าไม่มีบัญชีทั้งหมด

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

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

04 / 04

ตั้งเวลา ความลับ และบันทึกงานScheduling, Secrets and Logging · 14.1.4

Scheduled job ต้องมีตัวตนที่ใช้รัน วิธีจัด secrets และ log ที่สืบย้อนเหตุได้

Scheduled job ต้องกำหนด identity, working directory, environment, timeout และการกันรันซ้อน Secrets ควรมาจากช่องทางเก็บที่เหมาะ ส่วน log ต้องพอวิเคราะห์แต่ไม่เปิดเผยรหัสผ่าน token หรือข้อมูลเกินจำเป็น

เทียบหน้าที่เพื่อไม่สับสน
•Schedule context

บัญชีและ environment

•Secret access

ข้อมูลรับรองตามสิทธิ์

•Run evidence

ผล เวลา และข้อผิดพลาด

สคริปต์รันมือได้แต่ scheduled task ไม่ได้อาจเพราะบัญชีหรือ path ต่าง ใช้ absolute path และดู exit result กับ log กำหนดการแจ้งเตือนเมื่อ job หยุด เพื่อไม่ถือว่าความเงียบแปลว่าสำเร็จ

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

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

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

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

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

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

งานตามเวลารันไม่ผ่านอาจเพราะใช้บัญชีหรือ PATH ต่างจากตอนรันด้วยมือ

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

สคริปต์ดูแลระบบทำงานกับทรัพยากรจริง จึงต้องรู้ข้อมูลที่รับ สิทธิ์ และการบันทึกผล

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

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

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

Python · Tutorial ↗