Ẹyọ 2 / 11

Awọn iwe afọwọkọ adaṣe: Ṣiṣẹda Bash, PowerShell, ati Python lailewu

Awọn anfani:

  • Agbara lati ṣe agbejade Bash, PowerShell ati awọn iwe afọwọkọ adaṣe Python pẹlu awọn idiwọ ti o han gbangba ati awọn ẹṣọ aabo pẹlu oye atọwọda
  • Agbara lati ṣafikun awọn ipilẹ bii idempotency, ṣiṣe gbigbẹ, mimu aṣiṣe ati yiyi pada si iwe afọwọkọ kọọkan ati lo ọna 'ipilẹṣẹ, lile, rii daju'
  • Agbara lati ni oye pe ipaniyan ti iwe afọwọkọ ti a ṣe ko tumọ si pe o wa ni ailewu ati lati gba ihuwasi ti gbigbe ojuse nipasẹ kika ati idanwo awọn laini iparun.

Awọn iwe afọwọkọ adaṣe: Ti ipilẹṣẹ Bash, PowerShell ati Python lailewu pẹlu AI

Ọta ti o buruju ti oluṣakoso eto jẹ iṣẹ afọwọṣe atunwi: sisopọ si ẹrọ kọọkan ati mimọ awọn akọọlẹ, ṣiṣi olumulo kanna lori awọn olupin ogun, ṣiṣe ayẹwo ilera kanna ni gbogbo owurọ. Atunwi yii ṣii si akoko mejeeji ati aṣiṣe eniyan. Iwe afọwọkọ adaṣe jẹ eto kekere kan ti o ṣe aṣoju awọn iterations wọnyi si kọnputa - pupọ julọ ti a kọ sinu Bash (ede aṣẹ ikarahun) ni agbaye Linux, PowerShell (ikarahun adaṣe Microsoft) ni agbaye Windows, ati Python fun iṣẹ ominira Syeed. AI jẹ iyara iyalẹnu ni iṣelọpọ, ṣiṣe alaye ati ilọsiwaju apẹrẹ akọkọ ti awọn iwe afọwọkọ wọnyi. Ṣugbọn iwe afọwọkọ kii ṣe ọrọ, o jẹ agbara ti n ṣiṣẹ ninu eto rẹ; Ko dabi agbekalẹ Excel kan, ti o ba jẹ pe ko tọ, o paarẹ faili naa, da iṣẹ naa duro, ati gige iwọle. Ti o ni idi ti ileri ti ẹyọkan yii jẹ: AI kọ iwe afọwọkọ naa, o ka, ṣe idanwo rẹ ati ṣiṣe ni gbigba ojuse.

Ninu ẹyọ yii, iwọ yoo kọ ẹkọ bi o ṣe le ṣe agbejade ailewu, kika ati awọn iwe afọwọkọ igbasilẹ pẹlu AI; Awọn ilana igbala-aye gẹgẹbi arapotency (nṣiṣẹ iwe afọwọkọ kanna lemeji ko fa ibajẹ) ati ṣiṣe-gbẹ; ati pe iwọ yoo kọ awọn sọwedowo ti iwe afọwọkọ gbọdọ kọja ṣaaju fifi sii sinu iṣelọpọ.

Kini idi ti iwe afọwọkọ pẹlu AI jẹ alagbara?

Paapaa oluṣakoso ti o ni iriri le ma mọ sintasi gangan ti loop Bash, awọn aye ti PowerShell cmdlet (aṣẹ), tabi gbiyanju Python kan / ayafi idinamọ nipasẹ ọkan. AI fọwọsi aafo yii lesekese: o ṣe alaye idi naa ni Tọki lasan, ati pe o ṣe agbekalẹ ilana iṣẹ kan. Pẹlupẹlu, o le fun iwe afọwọkọ ti o wa tẹlẹ si AI ki o sọ “ṣalaye eyi”, “fikun mimu aṣiṣe,” “jẹ ki o ṣee ka diẹ sii”. Eyi n kuru ọna ikẹkọ ati mu awọn ọmọ ẹgbẹ ẹgbẹ kekere wa si iyara.

Ṣugbọn pẹlu agbara wa ojuse. Ni ọpọlọpọ igba, iwe afọwọkọ AI ti ipilẹṣẹ kọ “ọna ayọ” ni deede (ti gbogbo rẹ ba dara); ṣugbọn o le padanu awọn ọran eti (faili ti nsọnu, disiki kikun, nẹtiwọọki isalẹ) tabi ṣe awọn arosinu ti o lewu. Nitorinaa ronu iran iwe afọwọkọ pẹlu AI ni awọn ipele mẹta: ipilẹṣẹ, lile, rii daju.

Igbesẹ nipa igbese: iran iwe afọwọkọ to ni aabo

  1. Kọ aniyan ati ihamọ ni kedere. Iru ẹrọ ṣiṣe wo, iru ikarahun wo, awọn ọna faili wo, awọn ẹtọ wo? Bi "Ubuntu 22.04, Bash 5, sudo ko root, ṣiṣe nikan labẹ /opt/app/logs". Ibeere alaiṣedeede n ṣe arosinu ti o lewu.
  2. Beere fun ailewu afowodimu. Beere iwe afọwọkọ lati “duro lori ikuna” (set-euo pipefail ni Bash), tọ fun ijẹrisi awọn iṣẹ apanirun, afẹyinti ṣaaju ṣiṣe, ati ipo ṣiṣe-gbẹ. Awọn ọna aabo wọnyi gba eti sọ pe AI kọja.
  3. Kọ idemmọ. Iwe afọwọkọ ko yẹ ki o fa eyikeyi awọn aṣiṣe tabi ibajẹ nigbati o nṣiṣẹ ni akoko keji. Ṣeto ọgbọn kan ti “fo ti olumulo ba wa tẹlẹ”, “ṣẹda ilana ti ko ba si, maṣe fi ọwọ kan rẹ ti o ba wa”. Eyi n gba adaṣe laaye lati ṣiṣẹ lailewu leralera.
  4. Ka ati oye. Ka gbogbo ila ti a ṣe. Beere lọwọ AI lati samisi awọn aṣẹ iparun (rm, Yọ-Nkan, DROP) lọtọ.
  5. Idanwo pẹlu gbẹ-ṣiṣe. Ni akọkọ, ṣiṣe ni ipo “sọ kini lati ṣe” dipo awọn iṣẹ ṣiṣe gangan. Ti abajade jẹ ohun ti o nireti, yipada si ipo gidi - ati lori ẹrọ idanwo ni akọkọ.
  6. Mura ipadabọ rẹ. Ṣe iwe afọwọkọ gba awọn afẹyinti? Ṣe o mọ bi o ṣe le mu afẹyinti pada? Ṣe gedu wa, ṣe o le rii kini o n ṣe nigbamii?
Imọran: Jẹ ki iwe afọwọkọ apanirun kọọkan pẹlu DRY_RUN = oniyipada otitọ ati asia --apply kan. Iwa aiyipada ni lati kọ ohun ti yoo ṣẹlẹ laisi piparẹ ohunkohun; Jẹ ki piparẹ gangan ṣiṣẹ nikan ti --apply ba funni ni gbangba. Iwa ọkan yii ṣe idilọwọ awọn ajalu-iṣẹ gigun.

mẹta mini igba

Ọran 1 - Idempotency ti fipamọ awọn wakati 3. Alakoso kan kọ iwe afọwọkọ kan ti o fi sori ẹrọ aṣoju ibojuwo kanna lori awọn olupin 25. Ẹya akọkọ kii ṣe idempotent: o fọ iṣeto ni ṣiṣe keji ti o ba ti fi sori ẹrọ aṣoju tẹlẹ. Ẹlẹrọ naa ni AI ṣafikun “ṣayẹwo ti o ba ti fi sii, foo ti o ba jẹ” ọgbọn. Lakoko window itọju atẹle iwe afọwọkọ naa lairotẹlẹ fa lẹmeji ṣugbọn ko ṣe ipalara. Idempotency ṣe imularada olupin 25 ko wulo.

Irú 2 - Gbẹ-ṣiṣe ti o ti fipamọ kan root liana. Ẹgbẹ kan gba iwe afọwọkọ Bash kan ti o sọ awọn afẹyinti atijọ di mimọ. Ti oniyipada ba ṣofo, ọna naa di / dipo / awọn afẹyinti / - eewu Ayebaye. Ẹlẹrọ naa kọkọ ran ni ipo DRY_RUN, o di didi nigbati o rii laini kan ti o jọra si rm -rf / ninu iṣẹjade, o ṣafikun ayẹwo oniyipada (: “${BACKUP_DIR:? ko le jẹ ofo}”). Ṣiṣe gbigbẹ mu kokoro kan ti yoo pa gbogbo disk kuro ṣaaju ki o lọ sinu iṣelọpọ.

Ọran 3 - Aṣiṣe iṣakoso ko ṣe idiwọ lati ji dide ni alẹ kan. Iwe afọwọkọ PowerShell kan n ṣe ifipamọ awọn akọọlẹ nigbati disiki naa ti kun. Ẹya akọkọ yoo kuna laiparuwo ti ipin nẹtiwọọki ko ba le wọle ati tẹsiwaju lati kun disiki naa. "Ṣayẹwo aṣeyọri ni igbesẹ kọọkan, ti ko ba ṣaṣeyọri, fi leti imeeli ki o da duro" ni afikun si AI. Lẹhin ọsẹ kan, ifiweranṣẹ naa bajẹ; Iwe afọwọkọ naa duro ati kilọ, disk naa ko kun, ko si ẹnikan ti o ji ni 3 owurọ.

Mẹrin daakọ awọn awoṣe

1) Iran iwe afọwọkọ Bash aabo:

Rẹ ipa: oga Linux adaṣiṣẹ ẹlẹrọ. Kọ iwe afọwọkọ kan fun Ubuntu 22.04 / Bash 5. Idi: [idi]. Awọn ofin:- Bẹrẹ pẹlu “set -euo pipefail”.- Fifọwọsi awọn oniyipada ti a beere pẹlu ": ${VAR:?}".- Ṣe awọn iṣẹ iparun pẹlu aiyipada DRY_RUN=otitọ; Jẹ ki ohun elo gidi ṣiṣẹ nikan pẹlu asia --apply. - Wọle igbesẹ kọọkan si stdout, da pẹlu ifiranṣẹ ti o nilari lori aṣiṣe. - Ṣe o idempotent (ki o ko ba fa ibaje lori keji yen). Lẹhinna: samisi awọn laini iparun ti o ni agbara lọtọ ki o kọ awọn ọran 3 ti Mo nilo lati ṣe idanwo ṣaaju iṣelọpọ.

2) Lile iwe afọwọkọ ti o wa tẹlẹ:

Ṣe awọn iwe afọwọkọ wọnyi ti o ṣetan fun iṣelọpọ: (1) ṣafikun mimu aṣiṣe ati gedu, (2) jẹ ki o ni agbara, (3) fi awọn aṣẹ iparun si ẹhin-ṣiṣe gbẹ, (4) yọ awọn ọna koodu lile ati awọn aṣiri si oniyipada. Ni ṣoki ṣapejuwe laini kọọkan ti o yipada ati idi. Akosile: [akosile]

3) Adaṣiṣẹ to ni aabo PowerShell:

Rẹ ipa: Windows adaṣiṣẹ iwé. Kọ iwe afọwọkọ ibaramu PowerShell 5.1. Idi: [idi]. Awọn ofin: - Bẹrẹ pẹlu "$ ErrorActionPreference = 'Duro'" - Fikun-WhatIf support to destructor cmdlets (aiyipada WhatIf) .- Pari iṣẹ kọọkan pẹlu igbiyanju/mu, aṣiṣe wọle.- Aṣiṣe iwe-ẹri; Lo paramita tabi titẹ sii to ni aabo. Samisi awọn ila iparun ki o kọ awọn igbesẹ ti o mu pada.

4) Cron/iṣeto ikosile iyipada ati iṣeduro:

Ṣe alaye alaye cron ti o tẹle ni Tọki lasan ki o kọ awọn akoko asiko 3 to nbọ: [ikosile] Paapaa, ti ibi-afẹde mi ba jẹ “[idi]”, ṣe alaye yii tọ tabi ṣe atunṣe ti o daba? Tun ṣe akiyesi ipa akoko akoko.

Ailagbara kiakia / Alagbara kiakia

Ibere ​​ailagbara:

Kọ mi iwe afọwọkọ ti o wẹ awọn log.

Itọkasi yii lewu: ko ṣe afihan iru OS, iru ilana wo, kini opin ọjọ-ori, iru aabo aabo. AI le ṣe ifijiṣẹ ọkan-ila kan, apanirun ati rm ti a ko rii daju.

Ibere ​​​​ti o lagbara:

Rẹ ipa: oga Linux adaṣiṣẹ ẹlẹrọ. Kọ iwe afọwọkọ mimọ fun Ubuntu 22.04 / Bash. Paarẹ awọn faili .log nikan labẹ /opt/app/logs ti o dagba ju 30 ọjọ lọ. Awọn ofin: ṣeto -euo pipefail; Fọwọsi BACKUP_DIR ati awọn oniyipada LOG_DIR (da duro ti o ba ṣofo); atokọ faili log ṣaaju piparẹ; Jẹ ki DRY_RUN=otitọ jẹ aiyipada, piparẹ gangan nikan pẹlu --apply; Jẹ ki o jẹ agbara. Samisi awọn laini iparun ki o kọ awọn oju iṣẹlẹ 3 ti MO yẹ ki o ṣe idanwo.

ẹya-ara

Ailagbara / sare akosile

àiya akosile

Mimu aṣiṣe

Rara, ikuna ipalọlọ

ṣeto -euo pipefail, gbiyanju / mu

apanirun igbese

Ṣiṣẹ taara

Ṣiṣe-gbigbẹ + ṣiṣayẹwo ṣiṣayẹwo

Tun bẹrẹ

le fa ipalara

Ailewu, ailewu

ìkọkọ isakoso

koodu lile

Ayipada/farasin input

yi pada

Ko si

Afẹyinti + igbesẹ pada

Awọn aṣiṣe ti o wọpọ

  • Nṣiṣẹ iwe apanirun lai gbẹ-run. Ko ri iwe afọwọkọ ti o ni rm, Yọ-Nkan, DROP akọkọ ni gbẹ mode owo disk.
  • Rekọja iṣayẹwo oniyipada asan. Oniyipada ọna ti o ṣofo ṣe / dipo / awọn afẹyinti /; : Rii daju lati jẹrisi pẹlu "${VAR:?}".
  • Igbagbe Idempotency. Awọn iwe afọwọkọ fi opin si nigba ti o ba ṣiṣe lemeji, ṣiṣe awọn adaṣiṣẹ ko gbẹkẹle.
  • Awọn asiri ifaminsi lile. Kikọ ọrọ igbaniwọle ati bọtini sinu iwe afọwọkọ jẹ jijo nigbati o pin iwe afọwọkọ yẹn.
  • Idanwo ni iṣelọpọ. Ṣiṣe akọkọ ṣiṣe ni iṣelọpọ tumọ si atunṣe lori ipele; igbeyewo ẹrọ akọkọ.
Akiyesi: Maṣe gba iwe afọwọkọ ti AI fun ni nitori “o ṣiṣẹ, iyẹn tumọ si pe o tọ”. Nitoripe o ṣiṣẹ ko tumọ si pe ko ṣe iparun. Iwe afọwọkọ le ṣiṣẹ lori ọna ayọ ati paarẹ data ni ipo eti; Idanwo gidi jẹ awọn ọran eti.

Ni soki

Awọn iwe afọwọkọ adaṣe imukuro atunwi ati dinku aṣiṣe eniyan; AI jẹ iyara iyalẹnu ni ipilẹṣẹ, ṣalaye, ati lile awọn iwe afọwọkọ wọnyi. Ṣugbọn iwe afọwọkọ jẹ agbara iṣẹ: ti o ba jẹ aṣiṣe, o paarẹ, da duro, da duro. Nitorinaa fi idi iyipo “gbejade, lile, rii daju”. Ṣafikun mimu aṣiṣe, arapotency, ṣiṣiṣẹ gbigbẹ, ati ipadabọ ninu gbogbo iwe afọwọkọ iparun. Jade awọn asiri si oniyipada, ṣe akọkọ ṣiṣe lori ẹrọ idanwo. AI akosile kọ; O jẹ iṣẹ rẹ lati ka rẹ, idanwo rẹ, ati gba ojuse fun ṣiṣe rẹ.

Ohun elo iṣẹ-ṣiṣe

Yan iṣẹ-ṣiṣe kan ti o tun ṣe pẹlu ọwọ ni iṣẹ rẹ (fun apẹẹrẹ, nu iwe ipamọ, ṣiṣi olumulo, ṣayẹwo ilera). Beere ilana kan lati AI pẹlu “afọwọkọ Bash to ni aabo” tabi awoṣe “Adaṣiṣẹ ti o ni aabo PowerShell” loke. Ka laini iwe afọwọkọ ti ipilẹṣẹ nipasẹ laini ati samisi awọn laini iparun. Ṣiṣe rẹ ni ipo gbigbẹ ni akọkọ lori ẹrọ idanwo, ṣe afiwe abajade pẹlu ireti rẹ. Lẹhinna fun iwe afọwọkọ naa pada si AI ki o sọ di mimọ pẹlu awoṣe “lile” ki o ṣe akiyesi awọn iyatọ 5 laarin awọn ẹya meji.

akojọ ayẹwo

  • [] Njẹ Mo ti ṣafikun awọn ihamọ bii OS, ẹya ikarahun, awọn ọna ati awọn ẹtọ ni tọ?
  • [] Njẹ iwe afọwọkọ naa jẹ ọlọdun-aṣiṣe pẹlu ṣeto -euo pipefail / $ErrorActionPreference='Duro'?
  • [] Njẹ awọn iṣẹ apanirun lẹhin ṣiṣe-gbẹ/-WhatIf ati pe o nilo asia ayẹwo ti o fojuhan?
  • [] Ṣe iwe afọwọkọ arapotent (ailewu lori ṣiṣe keji)?
  • [] Njẹ Mo ti fa awọn aṣiri jade si oniyipada / titẹ sii asiri dipo fifi koodu lile wọn bi?
  • [] Njẹ Mo ti ṣe ṣiṣe akọkọ lori ẹrọ idanwo ati pese ero ipadabọ kan?