Добивки:
- Способност за производство на скрипти за автоматизација на Bash, PowerShell и Python со јасни ограничувања и безбедносни заштитни огради со вештачка интелигенција
- Способност да се додадат принципи како што се idempotency, dry-run, справување со грешки и враќање назад на секоја скрипта и да се примени циклусот „генерира, зацврстува, проверува“
- Способност да се разбере дека извршувањето на произведеното сценарио не значи дека е безбедно и да се стекне навика за преземање одговорност преку читање и тестирање на деструктивни линии.
Скрипти за автоматизација: генерирање на Bash, PowerShell и Python безбедно со вештачка интелигенција
Најлошиот непријател на системскиот администратор е повторливата рачна работа: поврзување со секоја машина и чистење на дневниците, отворање на истиот корисник на дваесет сервери, извршување на истата здравствена проверка секое утро. Ова повторување е отворено и за време и за човечка грешка. Скрипта за автоматизација е мала програма која ги делегира овие повторувања на компјутерот - најчесто напишани на Bash (команден јазик на школка) во светот на Linux, PowerShell (автоматска школка на Мајкрософт) во светот на Windows и Python за работа независна од платформата. Вештачката интелигенција е неверојатно брза во производството, објаснувањето и подобрувањето на првиот нацрт на овие скрипти. Но, сценариото не е текст, тоа е сила која работи во вашиот систем; За разлика од формулата на Excel, ако е неточна, ја брише датотеката, ја запира услугата и го намалува пристапот. Затоа ветувањето на оваа единица е: вештачката интелигенција го пишува сценариото, вие го читате, тестирате и управувате со преземање одговорност.
Во оваа единица, ќе научите како да произведувате безбедни, читливи и повратни скрипти со вештачка интелигенција; Принципи кои спасуваат животи како што се идемотенција (изведувањето на истата скрипта двапати не предизвикува штета) и суво возење; и ќе ги научите проверките низ кои мора да помине сценариото пред да го пушти во продукција.
Зошто скриптирањето со вештачка интелигенција е толку моќно?
Дури и искусен администратор можеби не ја знае точната синтакса на јамката Bash, параметрите на PowerShell cmdlet (команда) или Python try/освен блок на памет. Вештачката интелигенција веднаш ја пополнува оваа празнина: ја објаснувате намерата на обичен турски јазик и создава работна шема. Покрај тоа, можете да дадете постоечка скрипта на вештачката интелигенција и да кажете „објасни го ова“, „додај справување со грешки“, „направи го почитлив“. Ова ја скратува кривата на учење и ги доведува помладите членови на тимот на брзина.
Но, со моќта доаѓа и одговорноста. Поголемиот дел од времето, скрипта генерирана од вештачка интелигенција правилно ја пишува „среќната патека“ (ако се е во ред); но може да ги пропушти рабовите (недостасува датотека, дискот е полн, мрежата е исклучена) или да прави опасни претпоставки. Затоа, размислете за генерирање скрипти со вештачка интелигенција во три фази: генерирање, зацврстување, проверка.
Чекор по чекор: безбедно генерирање скрипти
- Напишете ја јасно намерата и ограничувањето. Кој оперативен систем, која верзија на школка, кои патеки за датотеки, какви права? Како „Ubuntu 22.04, Bash 5, sudo not root, работи само под /opt/app/logs“. Двосмислената побарувачка произведува опасни претпоставки.
- Побарајте заштитни огради. Побарајте од скриптата „стоп при неуспех“ (постави -euo pipefail во Bash), да побара потврда за деструктивни операции, резервна копија пред работа и режим на суво извршување. Овие заштитни огради ги зафаќаат рабовите дека вештачката интелигенција заобиколува.
- Напиши идемпотентно. Скриптата не треба да предизвикува грешки или оштетувања кога се извршува по втор пат. Воспоставете логика „прескокнете ако корисникот веќе постои“, „создадете го директориумот ако не постои, не допирајте го ако постои“. Ова овозможува автоматизацијата да работи безбедно одново и одново.
- Прочитајте и разберете. Прочитајте ја секоја произведена линија. Побарајте од вештачката интелигенција да означува деструктивни команди (rm, Remove-Item, DROP).
- Тестирајте со суво. Прво, стартувајте го во режимот „кажување што да правам“ наместо вистинските операции. Ако излезот е она што го очекувате, префрлете се во реален режим - и прво на машината за тестирање.
- Подгответе го вашето враќање. Дали скриптата зема резервни копии? Дали знаете како да ја вратите резервната копија? Дали има сеча, можеш да видиш што прави подоцна?
Совет: секоја скрипта за уништувач нека содржи DRY_RUN=вистинска променлива и --apply flag. Стандардното однесување е да се напише што ќе се случи без да се избрише ништо; Нека вистинското бришење работи само ако --apply е експлицитно дадено. Оваа една навика спречува катастрофи во текот на кариерата.
три мини футроли
Случај 1 — Идемотенција зачувани 3 часа. Администратор напиша скрипта што го инсталираше истиот агент за следење на 25 сервери. Првата верзија не беше идемпотентна: ја прекина конфигурацијата при второто возење ако агентот веќе беше инсталиран. Инженерот имал вештачка интелигенција да додаде логика „провери дали е инсталирана, прескокнете ја ако е“. За време на следниот прозорец за одржување, скриптата случајно се активираше двапати, но не наштети. Идемотентноста го направи непотребно обновувањето на 25 сервери.
Случај 2 - Со суво извршување зачуван root директориум. Еден тим доби Bash скрипта што ги исчисти старите резервни копии. Ако променливата беше празна, патеката стана / наместо /backups/ — класична опасност. Инженерот прво го изврши во режим DRY_RUN, замрзна кога виде линија слична на rm -rf / на излезот и додаде проверка на променливата (: „${BACKUP_DIR:?не може да биде празна}“). Сувото трчање фати бубачка што ќе го избрише целиот диск пред да влезе во производство.
Случај 3 — Управувањето со грешки спречило да се разбуди една ноќ. Скрипта PowerShell архивираше дневници кога дискот беше полн. Првата верзија тивко ќе пропадне ако споделувањето на мрежата е недостапно и продолжи да го пополнува дискот. „Потврдете го успехот на секој чекор, доколку е неуспешен, известете ја е-поштата и запрете“ беше додадена во вештачката интелигенција. По една недела, постот беше скршен; Сценариото застана и предупреди, дискот не беше полн, никој не се разбуди во 3 часот наутро.
Четири шаблони за копирање
1) Безбедно генерирање на скрипти Bash:
Вашата улога: виш инженер за автоматизација на Linux. Напишете скрипта за Ubuntu 22.04 / Bash 5. Цел:[цел]. Правила:- Започнете со „set -euo pipefail“.- Потврдете ги потребните променливи со „: ${VAR:?}“.- Извршете деструктивни операции со стандардно DRY_RUN=true; Нека вистинската апликација работи само со знаменцето --apply. - Пријавете го секој чекор до stdout, застанете со значајна порака за грешка. - Направете го идемпотентен (за да не предизвикува штета при второто трчање). Потоа: посебно означете ги потенцијално деструктивните линии и напишете 3 случаи што треба да ги тестирам пред производството.
2) Стврднување на постоечката скрипта:
Подгответе ја следнава скрипта за производство: (1) додадете ракување со грешки и евидентирање, (2) направете го немоќен, (3) ставете деструктивни команди зад суво извршување, (4) извлечете хард-кодирани патеки и тајни на променливата. Накратко опишете ја секоја линија што сте ја промениле и зошто. Скрипта: [скрипта]
3) Сигурна автоматизација на PowerShell:
Вашата улога: експерт за автоматизација на Windows. Напишете скрипта компатибилна со PowerShell 5.1. Цел: [цел]. Правила:- Започнете со „$ErrorActionPreference = „Стоп““.- Додајте поддршка -WhatIf на cmdlet-ите на деструкторот (стандардно WhatIf).- Завиткајте го секое дејство со обиди/фаќање, грешка во евиденцијата.- Хардкодирање на акредитиви; Користете параметар или безбеден влез. Обележете ги деструктивните линии и напишете ги чекорите за поништување.
4) Декодирање и верификација на изразот на Cron/распоред:
Објаснете ја следнава cron изјава на обичен турски и напишете ги следните 3 времиња на извршување: [израз]Исто така, ако мојата цел е „[цел]“, дали оваа изјава е точна или дали има поправка што ја предлагате? Забележете го и ефектот на временскиот период.
Слаб промпт / Силен промпт
Слаба навестување:
Напиши ми скрипта што го чисти дневникот.
Ова известување е опасно: не е јасно кој ОС, кој именик, која старосна граница, која заштитна ограда. Вештачката интелигенција може да испорача еднослојна, деструктивна и непроверлива rm.
Моќен потсетник:
Вашата улога: виш инженер за автоматизација на Linux. Напишете скрипта за чистење дневник за Ubuntu 22.04 / Bash. Избришете ги само датотеките .log под /opt/app/logs кои се постари од 30 дена. Правила: set -euo pipefail; Потврдете ги променливите BACKUP_DIR и LOG_DIR (застанете ако се празни); листа на датотеки за евиденција пред бришење; Нека DRY_RUN=true е стандардно, вистинско бришење само со --apply; Нека биде идемпотентен. Обележете ги деструктивните линии и напишете 3 сценарија што треба да ги тестирам.
карактеристика
Слаба/брза скрипта
појачана скрипта
Ракување со грешки
Не, тивок неуспех
поставете -euo pipefail, обидете се/фатете
деструктивно дејство
Работи директно
Суво трчање + отворено знаменце за проверка
Рестартирајте
може да предизвика штета
Идемпотентен, безбеден
тајно управување
тешко кодирани
Променлив/скриен влез
поништи
Никој
Чекор за резервна копија + враќање
Вообичаени грешки
- Извршување на деструктивна скрипта без суво извршување. Не гледањето на скриптата што содржи rm, Remove-Item, DROP first во сув режим чини диск.
- Прескокнете ја проверката на нулта променлива. Празна променлива патека прави / наместо /backups/; : Не заборавајте да потврдите со „${VAR:?}“.
- Заборавајќи на идемпотенција. Скриптата се распаѓа кога се работи двапати, што ја прави автоматизацијата несигурна.
- Хард-кодирачки тајни. Запишувањето на лозинката и клучот во скриптата е протекување кога ја споделувате таа скрипта.
- Тестирање во производството. Правењето на првата продукција значи проба на сцената; прво тест машина.
Внимание: Не прифаќајте скрипта дадена од вештачката интелигенција само затоа што „работи, тоа значи дека е точно“. Само затоа што работи не значи дека не е деструктивно. Скрипта може да работи на среќната патека и да ги брише податоците во состојба на работ; Вистинскиот тест се рабовите.
Сумирано
Скриптите за автоматизација го елиминираат повторувањето и ја намалуваат човечката грешка; ВИ е неверојатно брза во генерирање, објаснување и зацврстување на овие скрипти. Но, сценариото е работна сила: ако е погрешно, брише, запира, прекинува. Затоа воспоставете го циклусот „произведува, зацврстува, проверува“. Вклучете справување со грешки, немоќ, суво извршување и резервна копија во секоја деструктивна скрипта. Извлечете ги тајните на променливата, направете го првото извршување на машината за тестирање. AI скрипта пишува; Ваша задача е да ја прочитате, да ја тестирате и да ја преземете одговорноста за водење.
Задача за апликација
Изберете задача што ја повторувате рачно на вашата работа (на пр. чистење на дневник, отворање на корисникот, здравствена проверка). Побарајте преглед од вештачката интелигенција со шаблонот „Secure Bash“ или „PowerShell безбедна автоматизација“ погоре. Прочитајте ја генерираната скрипта линија по ред и означете ги деструктивните линии. Вклучете го во режим на суво работење прво на машина за тестирање, споредете го излезот со вашите очекувања. Потоа вратете ја скриптата на вештачката интелигенција и рафинирајте ја со шаблонот „зацврстуваат“ и забележете ги 5-те разлики помеѓу двете верзии.
листа за проверка
- [ ] Дали вклучив ограничувања како што се ОС, верзија на школка, патеки и права во промптот?
- [ ] Дали скриптата е толерантна за грешки со set -euo pipefail / $ErrorActionPreference='Стоп'?
- [ ] Дали деструктивните операции стојат зад суво/-Што ако и бараат експлицитно знаменце за проверка?
- [ ] Дали сценариото е идемпотентно (безбедно при второто прикажување)?
- [ ] Дали ги извлеков тајните на променливите/тајните внесувања наместо да ги кодирам?
- [ ] Дали го направив првото возење на машината за тестирање и подготвив план за враќање?