Naúrar 2 / 11

Rubutun Automation: Samar da Bash, PowerShell, da Python Lafiya

Riba:

  • Ikon samar da rubutun Bash, PowerShell da Python tare da takamaiman ƙuntatawa da matakan tsaro tare da hankali na wucin gadi.
  • Ikon ƙara ƙa'idodi irin su idempotency, bushe-gudu, sarrafa kuskure da juyawa zuwa kowane rubutun da amfani da zagayowar 'ƙarfafa, taurare, tabbatar'
  • Ƙarfin fahimtar cewa aiwatar da rubutun da aka samar ba yana nufin yana da lafiya ba kuma don samun al'ada na daukar nauyin karatu da gwada layukan lalata.

Rubutun Automation: Samar da Bash, PowerShell da Python Lafiya tare da AI

Mummunan maƙiyin mai sarrafa tsarin shine maimaita aikin hannu: haɗawa da kowane injin da tsaftace rajistan ayyukan, buɗe mai amfani iri ɗaya akan sabobin ashirin, gudanar da binciken lafiya iri ɗaya kowace safiya. Wannan maimaitawa a buɗe take ga duka lokaci da kuskuren ɗan adam. Rubutun Automation ƙaramin shiri ne wanda ke ba da waɗannan abubuwan ƙararrawa zuwa kwamfuta - galibi ana rubuta su cikin Bash (harshen umarni na harsashi) a cikin duniyar Linux, PowerShell (harsashin sarrafa kansa na Microsoft) a cikin duniyar Windows, da Python don aikin dandamali mai zaman kansa. AI yana da saurin gaske wajen samarwa, bayyanawa da haɓaka daftarin farko na waɗannan rubutun. Amma rubutun ba rubutu ba ne, ƙarfin aiki ne a cikin tsarin ku; Ba kamar tsarin Excel ba, idan ba daidai ba ne, yana share fayil ɗin, yana dakatar da sabis ɗin, yana yanke shiga. Shi ya sa alƙawarin wannan rukunin shine: AI ya rubuta rubutun, ku karanta shi, gwada shi kuma ku gudanar da shi ɗaukar nauyi.

A cikin wannan rukunin, za ku koyi yadda ake samar da amintattun, karantawa da kuma rubutun rubutun tare da AI; Ka'idodin ceton rai irin su idempotency (gudanar da rubutun guda sau biyu ba ya haifar da lalacewa) da bushe-gudu; kuma za ku koyi cak ɗin da dole ne rubutun ya bi kafin sanya shi cikin samarwa.

Me yasa rubutun da AI ke da ƙarfi sosai?

Ko da gogaggen mai gudanarwa bazai san ainihin ma'anar madauki na Bash ba, ma'auni na PowerShell cmdlet (umurni), ko gwada Python/sai dai toshewa ta zuciya. AI ta cika wannan gibin nan take: kuna bayyana niyya a cikin Baturke a sarari, kuma yana samar da tsarin aiki. Bugu da ƙari, zaku iya ba da rubutun da ke akwai ga AI kuma ku ce "bayyana wannan", "ƙara sarrafa kuskure", "sa shi mafi karantawa". Wannan yana gajarta tsarin ilmantarwa kuma yana kawo ƙananan membobin ƙungiyar zuwa sauri.

Amma tare da iko ya zo da alhakin. Yawancin lokaci, rubutun AI da aka samar yana rubuta "hanyar farin ciki" daidai (idan duk yana da kyau); amma yana iya rasa lokuta na gefen (fayil ya ɓace, cika diski, cibiyar sadarwa ƙasa) ko yin zato masu haɗari. Don haka tunanin tsara rubutun tare da AI a cikin matakai uku: ƙirƙira, taurare, tabbatarwa.

Mataki-mataki: amintaccen tsara rubutun

  1. Rubuta niyya da ƙuntatawa a sarari. Wanne tsarin aiki, wane nau'in harsashi, waɗanne hanyoyin fayil, menene hakki? Kamar "Ubuntu 22.04, Bash 5, sudo ba tushen ba, kawai gudu a ƙarƙashin /opt/app/logs". Buƙatun da ba daidai ba yana haifar da zato mai haɗari.
  2. Nemi layin tsaro. Bukatar rubutun don "dakatar da gazawar" (saitin -euo pipefail a cikin Bash), da sauri don tabbatar da ayyukan lalata, ajiyar baya kafin aiki, da yanayin bushewa. Wadannan hanyoyin tsaro sun kama gefen sun bayyana cewa AI ta ketare.
  3. Rubuta mai ƙarfi. Rubutun bai kamata ya haifar da kurakurai ko lalacewa ba lokacin da aka sake kunnawa karo na biyu. Kafa ma'anar "tsalle idan mai amfani ya riga ya wanzu", "ƙirƙiri kundin adireshi idan babu shi, kar a taɓa shi idan akwai". Wannan yana ba da damar sarrafa kansa don yin aiki lafiya akai-akai.
  4. Karanta kuma ku fahimta. Karanta kowane layi da aka samar. Tambayi AI don yiwa umarni masu lalacewa (rm, Cire-Abu, DROP) daban.
  5. Gwada tare da bushe-gudu. Da farko, gudanar da shi a cikin yanayin "gaya abin da za a yi" maimakon ainihin ayyuka. Idan fitarwa shine abin da kuke tsammani, canza zuwa yanayin gaske - kuma akan injin gwajin farko.
  6. Shirya dawowar ku. Rubutun yana ɗaukar madadin? Kun san yadda ake mayar da madadin? Akwai shiga, za ku iya ganin abin da yake yi daga baya?
Tukwici: Ka sa kowane rubutun ɓarna ya haɗa da DRY_RUN = madaidaicin gaskiya da tuta --apply. Halin da aka saba shine rubuta abin da zai faru ba tare da share wani abu ba; Bari ainihin gogewa yayi aiki kawai idan --apply an ba da shi a sarari. Wannan ɗabi'a ɗaya tana hana bala'o'i na tsawon aiki.

uku mini lokuta

Hali na 1 - Ajiye rashin ƙarfi 3 hours. Wani mai gudanarwa ya rubuta rubutun da ya shigar da wakili iri ɗaya akan sabobin 25. Sigar farko ba ta kasance mai ƙarfi ba: ta karya tsarin saitin a karo na biyu idan an riga an shigar da wakili. Injiniyan yana da AI ta ƙara "duba idan an shigar dashi, tsallake shi idan ya kasance" dabaru. A lokacin taga gyara na gaba rubutun ya haifar da bazata sau biyu amma bai yi illa ba. Rashin rashin ƙarfi ya sa dawo da uwar garken 25 bai zama dole ba.

Case 2 - Dry-gudu ya adana tushen directory. Ƙungiya ɗaya ta sami rubutun Bash wanda ya kawar da tsofaffin madadin. Idan mai canzawa ya kasance fanko, hanyar ta zama / maimakon /majiye/ - babban haɗari. Injiniyan ya fara gudanar da shi a yanayin DRY_RUN, ya daskare lokacin da ya ga layi mai kama da rm -rf / a cikin fitarwa, kuma ya kara da madaidaicin rajistan (: "${BACKUP_DIR:? ba za a iya zama komai ba}"). Gudun bushewa ya kama wani kwaro wanda zai goge dukkan faifan kafin ya fara samarwa.

Case 3 — Kuskuren sarrafa shi ya hana shi daga farkawa dare ɗaya. Rubutun PowerShell yana adana rajistan ayyukan lokacin da faifan ya cika. Sigar farko ba za ta yi shuru ba idan rabon hanyar sadarwa bai isa ba kuma ya ci gaba da cike faifan. "Tabbatar nasara a kowane mataki, idan ba a yi nasara ba, sanar da imel kuma ku tsaya" an ƙara zuwa AI. Bayan mako guda, sakon ya karye; Rubutun ya tsaya yana gargadi, faifan bai cika ba, babu wanda ya farka karfe 3 na safe.

Samfura huɗu masu kwafi

1) Amintaccen tsara rubutun Bash:

Matsayinku: babban injiniyan sarrafa kansa na Linux. Rubuta rubutun don Ubuntu 22.04 / Bash 5. Manufar: [manufa]. Dokoki: - Fara da "set -euo pipefail" - Tabbatar da masu canji da ake buƙata tare da ": $ {VAR:?}" - Yi ayyuka masu lalacewa tare da tsoho DRY_RUN = gaskiya; Bari ainihin aikace-aikacen ya gudana tare da --apply flag. - Shiga kowane mataki zuwa stdout, tsaya tare da saƙo mai ma'ana akan kuskure. - Yi shi mai ƙarfi (don kada ya haifar da lalacewa a karo na biyu). Sa'an nan: yi alama layukan da za su iya lalacewa daban kuma rubuta lokuta 3 waɗanda nake buƙatar gwadawa kafin samarwa.

2) Ƙarfafa rubutun da ke akwai:

Shirya rubutun mai zuwa don samarwa: (1) ƙara sarrafa kurakurai da shiga, (2) sanya shi mai ƙarfi, (3) sanya umarni masu lalata a bayan bushe-bushe, (4) fitar da hanyoyi masu ƙarfi da sirri ga masu canji. A taƙaice kwatanta kowane layi da kuka canza kuma me yasa. Rubutun: [rubutu]

3) PowerShell amintaccen aiki da kai:

Matsayinku: Masanin sarrafa sarrafa Windows. Rubuta rubutun PowerShell 5.1 mai jituwa. Manufar: [manufa]. Dokoki: - Fara da "$ ErrorActionPreference = 'Tsaya'" - Ƙara -WhatIf goyon baya ga masu lalata cmdlets (tsoho WhatIf) - Kunsa kowane mataki tare da gwadawa / kama, kuskuren shiga.- Hardcoding na ainihi; Yi amfani da siga ko amintaccen shigarwa. Alama layukan lalata kuma rubuta matakan gyarawa.

4).

Yi bayanin bayanin cron mai zuwa a cikin bayyanannen Turkanci kuma rubuta lokacin gudu guda 3 na gaba: [bayani] Hakanan, idan burina shine "[manufa]", shin wannan bayanin daidai ne ko akwai gyara da kuke ba da shawara? Hakanan lura da tasirin lokacin lokaci.

Rauni mai ƙarfi / Ƙarfi mai ƙarfi

Rawanin faɗakarwa:

Rubuta mani rubutun da ke wanke gungu.

Wannan saurin yana da haɗari: ba a bayyana wanne OS, wanne directory ba, wanne iyaka shekarun, wane tsarin tsaro. AI na iya isar da layin layi ɗaya, ɓarna kuma mara tabbas rm.

Ƙarfi mai ƙarfi:

Matsayinku: babban injiniyan sarrafa kansa na Linux. Rubuta rubutun tsabtace log don Ubuntu 22.04 / Bash. Share fayilolin log kawai a ƙarƙashin /opt/app/logs waɗanda suka girmi kwanaki 30. Dokokin: saita -euo pipefail; Tabbatar da BACKUP_DIR da LOG_DIR masu canji (tsaya idan babu komai); log file list kafin sharewa; Bari DRY_RUN = gaskiya ta zama tsoho, ainihin gogewa kawai tare da --apply; Bari ya zama mai iko. Yi alamar layukan lalata kuma rubuta yanayi guda 3 da zan gwada.

fasali

Rubutun rauni/mai sauri

rubutun taurare

Kuskuren kulawa

A'a, kasawar shiru

saita -euo pipefail, gwada/kama

aiki mai lalacewa

Yana aiki kai tsaye

Dry-gudu + tutar buɗaɗɗen rajistan shiga

Sake kunnawa

na iya haifar da lahani

Mahimmanci, lafiya

sarrafa sirri

hard code

Shigarwa mai canzawa/boye

warware

Babu

Ajiyayyen + mayar da mataki

Kuskuren gama gari

  • Gudun rubutun lalata ba tare da bushe-gudu ba. Rashin ganin rubutun da ke ɗauke da rm, Cire-Abu, DROP na farko a cikin yanayin bushewa yana kashe diski.
  • Tsallake dubawa mara kyau. Madaidaicin hanyar fanko yana yin / maimakon /ajiyayyen/; : Tabbatar tabbatarwa da "${VAR:?}".
  • Manta Idempotency. Rubutun yana karya lokacin da ake gudu sau biyu, yana mai da sarrafa kansa ba abin dogaro ba.
  • Sirri mai ƙarfi. Rubuta kalmar sirri da maɓalli a cikin rubutun yana raguwa lokacin da kuke raba wannan rubutun.
  • Gwaji a samarwa. Yin gudu na farko a cikin samarwa yana nufin maimaitawa akan mataki; injin gwajin farko.
Hankali: Kar a yarda da rubutun da AI ta bayar kawai saboda "ya yi aiki, hakan yana nufin daidai ne". Kawai saboda yana aiki ba yana nufin ba mai lalacewa ba ne. Rubutun na iya gudana akan hanyar farin ciki kuma ya share bayanai a cikin gefen gefen; Ainihin gwajin shine lokuta na gefen.

a takaice

Rubutun atomatik suna kawar da maimaitawa kuma suna rage kuskuren ɗan adam; AI yana da saurin gaske wajen ƙirƙira, bayyanawa, da taurare waɗannan rubutun. Amma rubutun ƙarfin aiki ne: idan ba daidai ba, yana gogewa, tsayawa, katsewa. Don haka kafa tsarin "samar, taurare, tabbatarwa". Haɗa da sarrafa kuskure, rashin ƙarfi, bushe-bushe, da koma baya a cikin kowane rubutun ɓarna. Cire sirrin zuwa mai canzawa, yi farkon gudu akan injin gwaji. Rubutun AI ya rubuta; Aikin ku ne karanta shi, gwada shi, kuma ku ɗauki alhakin gudanar da shi.

Aikin aikace-aikace

Zaɓi aikin da kuka maimaita da hannu a cikin aikinku (misali tsaftace log, buɗe mai amfani, duba lafiya). Nemi fayyace daga AI tare da samfurin "Secure Bash script" ko "PowerShell amintaccen aiki da kai" a sama. Karanta layin rubutun da aka ƙirƙira ta layi kuma yi alama layukan lalata. Gudanar da shi a cikin yanayin bushewa da farko akan injin gwaji, kwatanta fitarwa tare da tsammanin ku. Sa'an nan kuma mayar da rubutun zuwa AI kuma a tace shi tare da samfurin "harden" kuma lura da bambance-bambancen 5 tsakanin nau'ikan biyu.

jerin abubuwan dubawa

  • [ ] Na haɗa hani kamar OS, nau'in harsashi, hanyoyi da haƙƙoƙi a cikin hanzari?
  • [ ] Shin rubutun yana da haƙuri tare da saita -euo pipefail / $ErrorActionPreference='Dakata'?
  • [ ] Shin ayyuka masu lalacewa ne a bayan bushe-bushe/-WhatIf kuma suna buƙatar tuta ta tantancewa?
  • [] Shin rubutun yana da ƙarfi (aminci akan gudu na biyu)?
  • [ ] Shin na ciro sirrin zuwa shigarwar canji/asiri maimakon yin rikodin su?
  • [ ] Shin na yi gudu na farko akan injin gwajin kuma na shirya shirin dawowa?