Birlik 2 / 11

Avtomatlashtirish skriptlari: Bash, PowerShell va Python-ni xavfsiz yaratish

Daromadlar:

  • Bash, PowerShell va Python avtomatlashtirish skriptlarini aniq cheklovlar va sun'iy intellektga ega xavfsizlik to'siqlari bilan ishlab chiqarish qobiliyati
  • Har bir skriptga identifikatorlik, quruq ishga tushirish, xatolarni qayta ishlash va qaytarish kabi printsiplarni qo'shish va "yaratish, qattiqlashtirish, tekshirish" tsiklini qo'llash qobiliyati
  • Ishlab chiqarilgan stsenariyning bajarilishi uning xavfsiz ekanligini anglatmasligini tushunish qobiliyati va halokatli satrlarni o'qish va sinab ko'rish orqali mas'uliyatni o'z zimmasiga olish odatiga ega bo'lish.

Avtomatlashtirish skriptlari: AI bilan xavfsiz Bash, PowerShell va Python yaratish

Tizim ma'murining eng yomon dushmani - bu takroriy qo'lda ishlash: har bir mashinaga ulanish va jurnallarni tozalash, yigirmata serverda bir xil foydalanuvchini ochish, har kuni ertalab bir xil sog'liq tekshiruvini o'tkazish. Bu takrorlash ham vaqt, ham inson xatosi uchun ochiqdir. Avtomatlashtirish skripti bu iteratsiyalarni kompyuterga topshiradigan kichik dastur bo'lib, ko'pincha Linux dunyosida Bash (qobiq buyruqlar tili), Windows dunyosida PowerShell (Microsoftning avtomatlashtirish qobig'i) va platformadan mustaqil ishlash uchun Python tilida yoziladi. AI ushbu skriptlarning birinchi loyihasini yaratish, tushuntirish va takomillashtirishda juda tezdir. Lekin skript matn emas, bu sizning tizimingizda ishlaydigan kuchdir; Excel formulasidan farqli o'laroq, agar u noto'g'ri bo'lsa, u faylni o'chiradi, xizmatni to'xtatadi va kirishni qisqartiradi. Shuning uchun bu birlikning va'dasi: AI skriptni yozadi, siz uni o'qiysiz, sinovdan o'tkazasiz va mas'uliyatni o'z zimmangizga olasiz.

Ushbu bo'limda siz sun'iy intellekt yordamida xavfsiz, o'qiladigan va qayta tiklanadigan skriptlarni qanday yaratishni o'rganasiz; Idempotentlik (bir xil skriptni ikki marta ishlatish zarar keltirmaydi) va quruq yugurish kabi hayotni saqlab qolish tamoyillari; va siz skriptni ishlab chiqarishga qo'yishdan oldin o'tishi kerak bo'lgan tekshiruvlarni bilib olasiz.

Nega AI bilan skript yaratish shunchalik kuchli?

Hatto tajribali ma'mur ham Bash siklining aniq sintaksisini, PowerShell cmdlet (buyruq) parametrlarini yoki Python-ni sinab ko'rish/blokdan tashqari yoddan bilmasligi mumkin. AI bu bo'shliqni bir zumda to'ldiradi: siz maqsadni oddiy turk tilida tushuntirasiz va u ish rejasini ishlab chiqaradi. Bundan tashqari, siz sun'iy intellektga mavjud skriptni berishingiz va "buni tushuntiring", "xatolarni qayta ishlashni qo'shing", "uni yanada o'qilishi mumkin" deb aytishingiz mumkin. Bu o'rganish egri chizig'ini qisqartiradi va kichik jamoa a'zolarini tezlashtiradi.

Ammo kuch bilan birga mas'uliyat ham keladi. Ko'pincha, AI tomonidan yaratilgan skript "baxtli yo'l" ni to'g'ri yozadi (agar hamma narsa yaxshi bo'lsa); lekin u chekka holatlarni o'tkazib yuborishi mumkin (fayl etishmayotgan, disk to'la, tarmoq o'chirilgan) yoki xavfli taxminlarni keltirib chiqarishi mumkin. Shunday qilib, AI yordamida skript yaratishni uch bosqichda o'ylab ko'ring: yaratish, mustahkamlash, tekshirish.

Bosqichma-bosqich: xavfsiz skript yaratish

  1. Niyat va cheklovni aniq yozing. Qaysi operatsion tizim, qaysi qobiq versiyasi, qaysi fayl yo'llari, qanday huquqlar? "Ubuntu 22.04, Bash 5, sudo root emas, faqat /opt/app/logs" ostida ishlaydi. Noaniq talab xavfli taxminni keltirib chiqaradi.
  2. Xavfsizlik panjaralarini so'rang. Skriptdan "noto'g'ri ishlashni to'xtatish" (Bash'da -euo pipefailni o'rnatish), halokatli operatsiyalarni tasdiqlashni so'rash, ishlashdan oldin zaxiralash va quruq ish rejimini talab qiling. Ushbu to'siqlar AI chetlab o'tadigan chekka holatlarni ushlaydi.
  3. Idempotent deb yozing. Skript ikkinchi marta ishga tushirilganda hech qanday xato yoki zarar keltirmasligi kerak. "Agar foydalanuvchi allaqachon mavjud bo'lsa, o'tkazib yuboring", "agar u mavjud bo'lmasa, katalogni yarating, agar mavjud bo'lsa, unga tegmang" mantiqini o'rnating. Bu avtomatlashtirishning qayta-qayta xavfsiz ishlashiga imkon beradi.
  4. O'qing va tushuning. Ishlab chiqarilgan har bir qatorni o'qing. AIdan halokatli buyruqlarni (rm, Remove-Item, DROP) alohida belgilashni so'rang.
  5. Quruq yugurish bilan sinab ko'ring. Birinchidan, uni haqiqiy operatsiyalar o'rniga "nima qilish kerakligini aytish" rejimida ishga tushiring. Chiqish siz kutgandek bo'lsa, haqiqiy rejimga o'ting - va avval sinov mashinasida.
  6. Qaytishingizni tayyorlang. Skript zaxira nusxasini oladimi? Zaxira nusxasini qanday tiklashni bilasizmi? Jurnal bormi, keyin nima qilayotganini ko'ra olasizmi?
Maslahat: Har bir destruktor skriptida DRY_RUN=true oʻzgaruvchisi va --apply belgisi boʻlsin. Standart xatti-harakatlar hech narsani o'chirmasdan nima sodir bo'lishini yozishdir; Haqiqiy o'chirish faqat --apply aniq ko'rsatilgan bo'lsa ishlaydi. Bu bitta odat mansabga cho'zilgan falokatlarning oldini oladi.

uchta mini holat

1-holati - Idepotency 3 soat saqlandi. Administrator 25 ta serverda bir xil monitoring agentini o'rnatgan skript yozgan. Birinchi versiya idempotent emas edi: agar agent allaqachon o'rnatilgan bo'lsa, u ikkinchi ishga tushirishda konfiguratsiyani buzdi. Muhandis AIga "o'rnatilganligini tekshiring, agar u o'rnatilgan bo'lsa, o'tkazib yuboring" mantiqini qo'shishni buyurdi. Keyingi parvarishlash oynasida skript tasodifan ikki marta ishga tushdi, lekin u hech qanday zarar etkazmadi. Idempotency 25-serverni tiklashni keraksiz qildi.

2-holat - Quruq ishga tushirish ildiz katalogini saqladi. Bir jamoa eski zaxira nusxalarini tozalaydigan Bash skriptini oldi. Agar o'zgaruvchi bo'sh bo'lsa, yo'l / o'rniga / zaxira nusxalari / - klassik xavfga aylandi. Muhandis avval uni DRY_RUN rejimida ishga tushirdi, chiqishda rm -rf / ga o'xshash chiziqni ko'rib qotib qoldi va o'zgaruvchan tekshiruvni qo'shdi (: "${BACKUP_DIR:?bo'sh bo'lishi mumkin emas}"). Quruq ishda xatolik yuzaga keldi, u ishlab chiqarishga kirishdan oldin butun diskni o'chirib tashlaydi.

3-holat - Xatolarni boshqarish uni bir kechada uyg'onishiga to'sqinlik qildi. Disk to'lganida PowerShell skripti jurnallarni arxivlayotgan edi. Agar tarmoq ulushiga kirish imkoni bo'lmasa va diskni to'ldirishda davom etsa, birinchi versiya jimgina muvaffaqiyatsiz bo'ladi. “Har bir qadamda muvaffaqiyatni tekshirib ko‘ring, agar muvaffaqiyatsiz bo‘lsa, elektron pochtaga xabar bering va to‘xtating” AIga qo‘shildi. Bir hafta o'tgach, post buzildi; Skript to'xtadi va ogohlantirdi, disk to'liq emas edi, hech kim ertalab soat 3 da uyg'onmadi.

To'rt nusxa ko'chirish shablonlari

1) Xavfsiz Bash skriptini yaratish:

Sizning rolingiz: Linux avtomatlashtirish bo'yicha katta muhandis. Ubuntu 22.04 / Bash 5 uchun skript yozing. Maqsad:[maqsad]. Qoidalar:- "set -euo pipefail" bilan boshlang.- Kerakli o'zgaruvchilarni ": ${VAR:?}" bilan tasdiqlang.- Odatiy holatda halokatli operatsiyalarni bajaring DRY_RUN=true; Haqiqiy dastur faqat --apply bayrog'i bilan ishlashiga ruxsat bering. - Stdout uchun har bir qadamni qayd qiling, xato haqida mazmunli xabar bilan to'xtating. - Uni idempotent qiling (ikkinchi yugurishda shikastlanmasligi uchun). Keyin: potentsial halokatli chiziqlarni alohida belgilang va ishlab chiqarishdan oldin sinab ko'rishim kerak bo'lgan 3 ta holatni yozing.

2) Mavjud skriptni qattiqlashtirish:

Quyidagi skriptni ishlab chiqarishga tayyorlang: (1) xatolarni qayta ishlash va jurnalga yozishni qo'shing, (2) uni idempotent qiling, (3) quruq ishga tushirish orqasida halokatli buyruqlarni qo'ying, (4) o'zgaruvchiga qattiq kodlangan yo'llar va sirlarni chiqarib oling. Siz o'zgartirgan har bir qatorni va nima uchun qisqacha tasvirlab bering. Skript: [skript]

3) PowerShell xavfsiz avtomatlashtirish:

Sizning rolingiz: Windows avtomatlashtirish bo'yicha mutaxassis. PowerShell 5.1 ga mos skript yozing. Maqsad: [maqsad]. Qoidalar:- "$ErrorActionPreference = 'Stop'" bilan boshlang.- Destruktor cmdletlariga -WhatIf qo'llab-quvvatlashini qo'shing (standart WhatIf).- Har bir harakatni sinab ko'rish/tutish, log xatosi bilan o'rash.- Hisob ma'lumotlarini qattiq kodlash; Parametr yoki xavfsiz kiritishdan foydalaning. Buzg'unchi chiziqlarni belgilang va bekor qilish qadamlarini yozing.

4) Cron/jadval ifodasini dekodlash va tekshirish:

Quyidagi cron iborasini oddiy turkchada tushuntiring va keyingi 3 ta ish vaqtini yozing: [ifoda]Shuningdek, agar mening maqsadim “[maqsad]” boʻlsa, bu gap toʻgʻrimi yoki siz taklif qilayotgan tuzatish bormi? Vaqt davrining ta'siriga ham e'tibor bering.

Zaif taklif / Kuchli taklif

Zaif taklif:

Menga jurnalni tozalaydigan skript yozing.

Bu so'rov xavfli: qaysi OS, qaysi katalog, qaysi yosh chegarasi, qaysi xavfsizlik panjarasi aniq emas. AI bitta chiziqli, halokatli va tekshirib bo'lmaydigan rmni etkazib berishi mumkin.

Kuchli so'rov:

Sizning rolingiz: Linux avtomatlashtirish bo'yicha katta muhandis. Ubuntu 22.04 / Bash uchun jurnalni tozalash skriptini yozing. Faqat /opt/app/logs ostida 30 kundan eski bo'lgan .log fayllarini o'chirib tashlang. Qoidalar: set -euo pipefail; BACKUP_DIR va LOG_DIR o'zgaruvchilarni tekshirish (bo'sh bo'lsa to'xtating); o'chirishdan oldin jurnal fayllari ro'yxati; DRY_RUN=true sukut bo'lsin, haqiqiy o'chirish faqat --apply; Idempotent bo'lsin. Buzg'unchi chiziqlarni belgilang va sinab ko'rishim kerak bo'lgan 3 ta stsenariyni yozing.

xususiyat

Zaif/tezkor skript

qattiqlashtirilgan skript

Xato bilan ishlash

Yo'q, jim muvaffaqiyatsizlik

set -euo pipefail, harakat qilib ko'ring/ushlang

halokatli harakat

To'g'ridan-to'g'ri ishlaydi

Quruq ish + ochiq tekshirish bayrog'i

Qayta ishga tushirish

zarar keltirishi mumkin

Idepotent, xavfsiz

maxfiy boshqaruv

qattiq kodlangan

O'zgaruvchan/yashirin kiritish

bekor qilish

Yo'q

Zaxira + tiklash bosqichi

Umumiy xatolar

  • Quritishsiz halokatli skriptni ishga tushirish. Quruq rejimda rm, Remove-Item, DROP ni o'z ichiga olgan skriptni ko'rmaslik diskka tushadi.
  • Null o'zgaruvchini tekshirishni o'tkazib yuboring. Bo'sh yo'l o'zgaruvchisi /zaxira nusxalari/ o'rniga / qiladi; : "${VAR:?}" bilan tasdiqlang.
  • Idepotentlikni unutish. Ikki marta ishga tushirilganda skript buziladi, bu esa avtomatlashtirishni ishonchsiz qiladi.
  • Qattiq kodlash sirlari. Ushbu skriptni baham ko'rganingizda skriptga parol va kalitni yozish sizib chiqadi.
  • Ishlab chiqarishda sinov. Ishlab chiqarishda birinchi yugurishni bajarish sahnada mashq qilishni anglatadi; avval mashinani sinab ko'ring.
Diqqat: AI tomonidan berilgan skriptni "u ishlagan, bu to'g'ri" degani uchun qabul qilmang. Bu ishlayotgani uning halokatli emasligini anglatmaydi. Skript baxtli yo'lda ishlashi va chekka holatidagi ma'lumotlarni o'chirishi mumkin; Haqiqiy sinov bu chekka holatlardir.

qisqa bayoni; yakunida

Avtomatlashtirish skriptlari takrorlashni bartaraf qiladi va inson xatosini kamaytiradi; AI bu skriptlarni yaratish, tushuntirish va mustahkamlashda juda tezdir. Ammo skript ishchi kuchdir: agar noto'g'ri bo'lsa, u o'chiradi, to'xtatadi, to'xtatadi. Shunday qilib, "ishlab chiqarish, qotib qolish, tekshirish" tsiklini o'rnating. Har bir halokatli skriptda xatolarni qayta ishlash, idempotentlik, quruq ishga tushirish va qayta tiklashni qo'shing. O'zgaruvchiga sirlarni chiqarib oling, sinov mashinasida birinchi ishga tushirishni bajaring. AI skriptini yozadi; Uni o'qish, sinab ko'rish va uni ishga tushirish uchun mas'uliyatni o'z zimmangizga olish sizning vazifangizdir.

Ilova vazifasi

Ishingizda qo'lda takrorlanadigan vazifani tanlang (masalan, jurnalni tozalash, foydalanuvchini ochish, sog'lig'ini tekshirish). Yuqoridagi “Secure Bash skripti” yoki “PowerShell xavfsiz avtomatlashtirish” shablonlari yordamida AIdan konturni so‘rang. Yaratilgan skriptni satr bilan o'qing va halokatli chiziqlarni belgilang. Uni avval sinov mashinasida quruq ish rejimida ishga tushiring, natijani kutganingiz bilan solishtiring. Keyin skriptni sun'iy intellektga qaytaring va uni "qattiqlashuvchi" shablon bilan aniqlang va ikkita versiya o'rtasidagi 5 ta farqga e'tibor bering.

nazorat ro'yxati

  • [ ] Soʻrovga OS, qobiq versiyasi, yoʻllar va huquqlar kabi cheklovlarni kiritdimmi?
  • [ ] Skript -euo pipefail / $ErrorActionPreference='To'xtatish' bilan xatolikka chidamlimi?
  • [ ] Quruq yugurish/-WhatIf ortida halokatli operatsiyalar bormi va aniq tekshirish belgisini talab qiladimi?
  • [ ] Skript idempotentmi (ikkinchi ishga tushirishda xavfsiz)?
  • [ ] Men ularni qattiq kodlash o'rniga o'zgaruvchan/maxfiy kiritish uchun sirlarni ochdimmi?
  • [ ] Men sinov mashinasida birinchi yugurishni amalga oshirdimmi va qaytish rejasini tayyorladimmi?