Yunit 2 / 11

Mga Automation Script: Ligtas na Pagbuo ng Bash, PowerShell, at Python

Mga nadagdag:

  • Kakayahang gumawa ng Bash, PowerShell at Python automation script na may malinaw na mga hadlang at security guardrail na may artificial intelligence
  • Kakayahang magdagdag ng mga prinsipyo tulad ng idempotency, dry-run, error handling at rollback sa bawat script at ilapat ang 'bumuo, tumigas, i-verify' cycle
  • Ang kakayahang maunawaan na ang pagpapatupad ng script na ginawa ay hindi nangangahulugan na ito ay ligtas at upang makuha ang ugali ng pagkuha ng responsibilidad sa pamamagitan ng pagbabasa at pagsubok ng mga mapanirang linya.

Mga Automation Script: Ligtas na Pagbuo ng Bash, PowerShell at Python gamit ang AI

Ang pinakamasamang kaaway ng system administrator ay ang paulit-ulit na manu-manong trabaho: pagkonekta sa bawat makina at paglilinis ng mga log, pagbubukas ng parehong user sa dalawampung server, pagpapatakbo ng parehong pagsusuri sa kalusugan tuwing umaga. Ang pag-uulit na ito ay bukas sa parehong oras at pagkakamali ng tao. Ang automation script ay isang maliit na program na nagde-delegate ng mga pag-ulit na ito sa computer — kadalasang nakasulat sa Bash (shell command language) sa Linux world, PowerShell (Microsoft's automation shell) sa Windows world, at Python para sa platform-independent na trabaho. Ang AI ay napakabilis sa paggawa, pagpapaliwanag at pagpapahusay sa unang draft ng mga script na ito. Ngunit ang script ay hindi isang teksto, ito ay isang puwersang gumagana sa iyong system; Hindi tulad ng isang formula ng Excel, kung ito ay mali, tinatanggal nito ang file, ihihinto ang serbisyo, at pinuputol ang pag-access. Kaya naman ang pangako ng unit na ito ay: Isinulat ng AI ang script, binabasa mo ito, subukan ito at patakbuhin ito nang may pananagutan.

Sa unit na ito, matututunan mo kung paano gumawa ng mga ligtas, nababasa at maaaring makuhang mga script gamit ang AI; Mga prinsipyong nagliligtas ng buhay gaya ng idempotency (ang pagpapatakbo ng parehong script nang dalawang beses ay hindi nagdudulot ng pinsala) at dry-run; at matututunan mo ang mga pagsusuri na dapat pagdaanan ng isang script bago ito ilagay sa produksyon.

Bakit napakalakas ng pag-script gamit ang AI?

Kahit na ang isang may karanasang administrator ay maaaring hindi alam ang eksaktong syntax ng isang Bash loop, ang mga parameter ng PowerShell cmdlet (command), o isang Python try/maliban block sa pamamagitan ng puso. Agad na pinupunan ng AI ang puwang na ito: ipinapaliwanag mo ang layunin sa simpleng Turkish, at gumagawa ito ng gumaganang outline. Bukod dito, maaari kang magbigay ng isang umiiral na script sa AI at sabihin ang "ipaliwanag ito", "magdagdag ng paghawak ng error", "gawing mas nababasa ito". Pinaikli nito ang curve ng pagkatuto at pinapabilis nito ang mga miyembro ng junior team.

Ngunit kasama ng kapangyarihan ang responsibilidad. Kadalasan, ang isang script na binuo ng AI ay nagsusulat ng "masayang landas" nang tama (kung ang lahat ay maayos); ngunit maaari itong makaligtaan ng mga kaso sa gilid (nawawala ang file, puno ang disk, pababa ang network) o gumawa ng mga mapanganib na pagpapalagay. Kaya isipin ang pagbuo ng script gamit ang AI sa tatlong yugto: bumuo, magpatigas, mag-verify.

Hakbang sa hakbang: secure na pagbuo ng script

  1. Isulat nang malinaw ang intensyon at paghihigpit. Aling operating system, aling bersyon ng shell, aling mga landas ng file, anong mga karapatan? Tulad ng "Ubuntu 22.04, Bash 5, sudo not root, tumakbo lang sa ilalim ng /opt/app/logs". Ang hindi maliwanag na demand ay nagbubunga ng mapanganib na palagay.
  2. Humingi ng mga rehas na pangkaligtasan. Atasan ang script na "stop on failure" (set -euo pipefail in Bash), prompt para sa kumpirmasyon ng mga mapanirang operasyon, backup bago ang operasyon, at dry-run mode. Ang mga guardrail na ito ay nakakuha ng gilid na nagsasaad na ang AI ay lumalampas.
  3. Sumulat ng idempotent. Ang script ay hindi dapat magdulot ng anumang mga error o pinsala kapag tumakbo sa pangalawang pagkakataon. Magtatag ng lohika ng "laktawan kung umiiral na ang gumagamit", "lumikha ng direktoryo kung wala ito, huwag hawakan ito kung mayroon na". Nagbibigay-daan ito sa automation na tumakbo nang ligtas nang paulit-ulit.
  4. Basahin at unawain. Basahin ang bawat linyang ginawa. Hilingin sa AI na markahan ang mga mapanirang utos (rm, Remove-Item, DROP) nang hiwalay.
  5. Subukan gamit ang dry-run. Una, patakbuhin ito sa mode na "telling what to do" sa halip na mga aktwal na operasyon. Kung ang output ay ang inaasahan mo, lumipat sa real mode — at sa test machine muna.
  6. Ihanda ang iyong pagbabalik. Ang script ba ay kumukuha ng mga backup? Alam mo ba kung paano i-restore ang backup? Mayroon bang pag-log, makikita mo ba kung ano ang ginagawa nito mamaya?
Tip: Isama sa bawat script ng destructor ang isang DRY_RUN=true variable at isang --apply na flag. Ang default na pag-uugali ay isulat kung ano ang mangyayari nang hindi nagtatanggal ng anuman; Hayaang gumana lang ang aktwal na pagtanggal kung ang --apply ay tahasang ibinigay. Ang isang ugali na ito ay pumipigil sa mga sakuna sa mahabang karera.

tatlong mini case

Case 1 — Na-save ang Idepotency ng 3 oras. Isang administrator ang nagsulat ng script na nag-install ng parehong monitoring agent sa 25 server. Ang unang bersyon ay hindi idempotent: sinira nito ang pagsasaayos sa pangalawang pagtakbo kung na-install na ang ahente. Ang inhinyero ay nagdagdag ng AI na "suriin kung ito ay naka-install, laktawan ito kung ito ay" na lohika. Sa susunod na window ng pagpapanatili, ang script ay hindi sinasadyang nag-trigger ng dalawang beses ngunit hindi ito nakapinsala. Ginawa ng Idempotency na hindi kailangan ang pagbawi ng 25-server.

Case 2 — Dry-run nag-save ng root directory. Isang team ang nakatanggap ng Bash script na nag-purged ng mga lumang backup. Kung walang laman ang variable, ang path ay naging / sa halip na /backups/ — isang klasikong panganib. Unang pinatakbo ito ng engineer sa DRY_RUN mode, natigilan nang makakita siya ng linyang katulad ng rm -rf / sa output, at nagdagdag ng variable check (: "${BACKUP_DIR:?cannot be empty}"). Ang dry running ay nakakuha ng isang bug na magpupunas sa buong disk bago ito pumasok sa produksyon.

Kaso 3 — Pinigilan ito ng pamamahala ng error na magising isang gabi. Isang PowerShell script ang nag-archive ng mga log kapag puno na ang disk. Ang unang bersyon ay tahimik na mabibigo kung ang network share ay hindi maa-access at patuloy na pupunuin ang disk. "I-verify ang tagumpay sa bawat hakbang, kung hindi matagumpay, i-notify ang e-mail at ihinto" ang idinagdag sa AI. Pagkatapos ng isang linggo, nasira ang post; Huminto ang script at nagbabala, hindi puno ang disk, walang nagising ng 3 am.

Apat na maaaring kopyahin na mga template

1) Ligtas na pagbuo ng script ng Bash:

Ang iyong tungkulin: senior Linux automation engineer. Sumulat ng script para sa Ubuntu 22.04 / Bash 5. Layunin:[layunin]. Mga Panuntunan:- Magsimula sa "set -euo pipefail".- I-validate ang mga kinakailangang variable gamit ang ": ${VAR:?}".- Magsagawa ng mga mapanirang operasyon na may default na DRY_RUN=true; Hayaang tumakbo ang tunay na application gamit ang --apply flag. - Mag-log sa bawat hakbang sa stdout, huminto sa isang makabuluhang mensahe sa error. - Gawin itong idempotent (upang hindi ito magdulot ng pinsala sa pangalawang pagtakbo). Pagkatapos: markahan ang mga potensyal na mapanirang linya nang hiwalay at sumulat ng 3 kaso na kailangan kong subukan bago ang produksyon.

2) Pinapatigas ang umiiral na script:

Ihanda ang sumusunod na script para sa produksyon: (1) magdagdag ng paghawak ng error at pag-log, (2) gawin itong idempotent, (3) ilagay ang mga mapanirang command sa likod ng dry-run, (4) i-extract ang mga hard-coded na path at sikreto sa variable. Maikling ilarawan ang bawat linyang binago mo at bakit. Script: [script]

3) Secure na automation ng PowerShell:

Ang iyong tungkulin: Windows automation expert. Sumulat ng PowerShell 5.1 compatible na script. Layunin: [purpose]. Mga Panuntunan:- Magsimula sa "$ErrorActionPreference = 'Stop'".- Magdagdag ng -WhatIf support sa mga destructor cmdlet (default WhatIf).- Balutin ang bawat aksyon ng try/catch, log error.- Credential hardcoding; Gumamit ng parameter o secure na input. Markahan ang mga mapanirang linya at isulat ang mga hakbang sa pag-undo.

4) Cron/schedule expression decoding at verification:

Ipaliwanag ang sumusunod na cron statement sa simpleng Turkish at isulat ang susunod na 3 runtime: [expression]Gayundin, kung ang layunin ko ay "[purpose]", tama ba ang statement na ito o may iminumungkahi kang pag-aayos? Tandaan din ang epekto ng yugto ng panahon.

Mahinang prompt / Malakas na prompt

Mahinang prompt:

Sumulat sa akin ng isang script na naglilinis ng log.

Delikado ang prompt na ito: hindi malinaw kung aling OS, aling direktoryo, aling limitasyon sa edad, aling security guardrail. Ang AI ay maaaring maghatid ng isang one-liner, mapanira at hindi mabe-verify na rm.

Napakahusay na prompt:

Ang iyong tungkulin: senior Linux automation engineer. Sumulat ng script ng paglilinis ng log para sa Ubuntu 22.04 / Bash. Tanggalin lang ang mga .log file sa ilalim ng /opt/app/logs na mas matanda sa 30 araw. Mga Panuntunan: set -euo pipefail; I-validate ang mga variable na BACKUP_DIR at LOG_DIR (itigil kung walang laman); listahan ng log file bago tanggalin; Hayaang ang DRY_RUN=true ang default, ang aktwal na pagtanggal lamang gamit ang --apply; Hayaan itong maging idempotent. Markahan ang mga mapanirang linya at sumulat ng 3 senaryo na dapat kong subukan.

tampok

Mahina/mabilis na script

pinatigas na script

Error sa paghawak

Hindi, tahimik na kabiguan

itakda ang -euo pipefail, subukan/huli

mapanirang pagkilos

Direktang gumagana

Dry-run + open check flag

I-restart

maaaring magdulot ng pinsala

Idempotent, ligtas

lihim na pamamahala

hard coded

Variable/nakatagong input

i-undo

wala

Hakbang sa pag-backup + pag-restore

Mga karaniwang pagkakamali

  • Pagpapatakbo ng mapanirang script nang walang dry-run. Hindi nakikita ang script na naglalaman ng rm, Remove-Item, DROP muna sa dry mode ay nagkakahalaga ng disk.
  • Laktawan ang null variable checking. Ang isang walang laman na variable ng path ay gumagawa ng / sa halip na /backups/; : Tiyaking i-verify gamit ang "${VAR:?}".
  • Nakakalimutan ang Idempotency. Masisira ang script kapag tumakbo nang dalawang beses, na ginagawang hindi maaasahan ang automation.
  • Mga lihim ng hard-coding. Ang pagsusulat ng password at key sa script ay isang leak kapag ibinahagi mo ang script na iyon.
  • Pagsubok sa produksyon. Ang paggawa ng unang pagtakbo sa produksyon ay nangangahulugan ng pag-eensayo sa entablado; test machine muna.
Pansin: Huwag tanggapin ang isang script na ibinigay ng AI dahil lamang sa "nagtrabaho ito, ibig sabihin ito ay tama". Dahil lamang sa gumagana ito ay hindi nangangahulugan na ito ay hindi mapanira. Maaaring tumakbo ang isang script sa masayang landas at magtanggal ng data sa estado ng gilid; Ang tunay na pagsubok ay ang mga gilid na kaso.

Sa buod

Ang mga script ng automation ay nag-aalis ng pag-uulit at binabawasan ang pagkakamali ng tao; Ang AI ay napakabilis sa pagbuo, pagpapaliwanag, at pagpapatigas ng mga script na ito. Ngunit ang script ay isang gumaganang puwersa: kung ito ay mali, ito ay nagtatanggal, huminto, nakakagambala. Kaya itatag ang "produce, harden, verify" cycle. Isama ang error handling, idempotency, dry-run, at fallback sa bawat mapanirang script. I-extract ang mga lihim sa variable, gawin ang unang pagtakbo sa test machine. Nagsusulat ng AI script; Trabaho mong basahin ito, subukan ito, at tanggapin ang responsibilidad sa pagpapatakbo nito.

Gawain ng aplikasyon

Pumili ng gawain na manu-mano mong inuulit sa iyong trabaho (hal. paglilinis ng log, pagbubukas ng user, pagsusuri sa kalusugan). Humiling ng outline mula sa AI na may template na "Secure Bash script" o "PowerShell secure automation" sa itaas. Basahin ang nabuong script na linya sa pamamagitan ng linya at markahan ang mga mapanirang linya. Patakbuhin muna ito sa dry-run mode sa isang test machine, ihambing ang output sa iyong inaasahan. Pagkatapos ay ibalik ang script sa AI at pinuhin ito gamit ang template na "patigasin" at tandaan ang 5 pagkakaiba sa pagitan ng dalawang bersyon.

checklist

  • [ ] Nagsama ba ako ng mga paghihigpit gaya ng OS, bersyon ng shell, mga landas at karapatan sa prompt?
  • [ ] Fault-tolerant ba ang script sa set -euo pipefail / $ErrorActionPreference='Stop'?
  • [ ] Ang mga mapanirang operasyon ba ay nasa likod ng dry-run/-WhatIf at nangangailangan ng isang tahasang check flag?
  • [ ] Idempotent ba ang script (ligtas sa pangalawang pagtakbo)?
  • [ ] Na-extract ko na ba ang mga lihim sa variable/secret input sa halip na hard coding ang mga ito?
  • [ ] Nagawa ko na ba ang unang pagtakbo sa test machine at naghanda ng plano sa pagbabalik?