ክፍል 9 / 11

ስክሪፕት እና አውቶሜሽን ማመንጨት፡ Bash፣ Python እና PowerShell

ትርፍ፡

  • የ Bash፣ Python እና PowerShellን ጥንካሬ የመረዳት ችሎታ እና አርቴፊሻል ኢንተለጀንስ ደህንነቱ የተጠበቀ እና የተጠበቁ የስክሪፕት ረቂቆችን ያመነጫል።
  • እንደ set-euo pipefail፣ ባዶ ተለዋዋጭ ፍተሻ፣ ደረቅ አሂድ ሁነታ እና ምዝግብ ማስታወሻ ባሉ ስክሪፕቶች ላይ የጥበቃ መንገዶችን የመጨመር ችሎታ።
  • አጥፊ ትዕዛዞችን የማንበብ ችሎታ እና በገለልተኛ አካባቢ እና በመጀመሪያ በደረቅ ሩጫ መሞከር እና ምስጢሩን በስክሪፕቱ ውስጥ ላለማካተት ተግሣጽ የመተግበር ችሎታ።

የዴቭኦፕስ መንፈስ በአንድ ዓረፍተ ነገር ተጠቃሏል፡ “የምትሰራውን ስራ ሁለት ጊዜ በራስ ሰር አድርግ። በእጅ የሚሰራ ማንኛውም ተደጋጋሚ ተግባር — ሎግ ማፅዳት፣ ምትኬ መውሰድ፣ የአገልጋይ ጤና ፍተሻ፣ ባች ፋይል ማቀናበር - ጊዜ የሚወስድ እና በመጨረሻ በሰው ስህተት ተበላሽቷል። ስክሪፕቶች እነዚህን ስራዎች ይቆጣጠራሉ፡ ተከታታይ ትእዛዞችን በቅደም ተከተል፣ በአስተማማኝ እና ሊደገም በሚችል መልኩ የሚያስፈጽሙ ትናንሽ ፕሮግራሞች። የዴቭኦፕስ ባለሙያው ሶስት ቋንቋዎችን በተደጋጋሚ ይጠቀማል፡- ባሽ (ለሊኑክስ/ዩኒክስ ሼል ስክሪፕቶች)፣ Python (ለተወሳሰበ አመክንዮ፣ ኤፒአይ ጥሪ፣ የውሂብ አጠቃቀም) እና PowerShell (ለዊንዶውስ እና ደመና አስተዳደር)።

AI ምናልባት በስክሪፕት ማመንጨት ውስጥ በጣም ተግባራዊ ዋጋን የሚሰጥበት ነው፡ ከአንድ አረፍተ ነገር መግለጫ የሚሰራ ረቂቅ ማዘጋጀት፣ ሚስጥራዊ ስህተትን መፍታት፣ ስክሪፕት ወደ ሌላ ቋንቋ መተርጎም። ነገር ግን ስክሪፕት በጭፍን ሲሮጥ አደገኛ ነው - የተሳሳተ rm, Remove-Item -Recurse ፋይሎችን በማይቀለበስ ሁኔታ ይሰርዛል. ለዚያም ነው የዚህ ክፍል መሪ ቃል፡ AI ስክሪፕቱን ይፃፈው፣ ያነቡት፣ በመጀመሪያ ደህንነቱ በተጠበቀ ሁነታ ይሞክሩት፣ ከዚያ ያሂዱት።

የትኛውን ቋንቋ መምረጥ እና መቼ? ረቂቅ ህግ፡ ስራው በተከታታይ በርካታ የስርዓት ትዕዛዞችን ማስኬድ ከሆነ (ፋይል ቅጂ፣ አገልግሎት ዳግም ማስጀመር፣ ማህደርን ሰርስሮ ማውጣት) ሊኑክስ በሁሉም ቦታ በአገልጋዮች ላይ ስለሚገኝ ባሽ በጣም ተፈጥሯዊ ምርጫ ነው። ስራው የውሳኔ አመክንዮ፣ ሉፒንግ፣ ዳታ ለውጥ፣ ኤፒአይ መጠየቅን ወይም JSON ማቀናበርን የሚያካትት ከሆነ - ማለትም ከ20 መስመሮች በላይ አመክንዮ - ፓይቶን ለንባብ እና ለበለጸጉ ቤተ-መጻሕፍት ጎልቶ ይታያል። ውስብስብ የባሽ ስክሪፕት በፍጥነት ለመረዳት የማይቻል ይሆናል፣ ፓይዘን ግን ለማቆየት ቀላል ሆኖ ይቆያል። ስራው የዊንዶውስ ሰርቨሮችን፣ አክቲቭ ዳይሬክተሩን ወይም አዙርን ማስተዳደርን የሚያካትት ከሆነ፣ ፓወር ሼል የተፈጥሮ አካባቢው ነው ምክንያቱም በነገሮች ላይ ያተኮረ ተፈጥሮው ከእነዚህ መድረኮች ጋር በጥልቀት ይዋሃዳል። የትኛውን ቋንቋ እንደመረጡ እና ለምን ወደ AI ስክሪፕት ሲጠይቁ ውጤቱ ለአካባቢዎ ተስማሚ እና ፈሊጥ መሆኑን ያረጋግጣል።

ደረጃ በደረጃ፡ ደህንነቱ የተጠበቀ የስክሪፕት ማመንጨት

  1. ተግባሩን እና አካባቢውን ይግለጹ. ምን ያደርጋል, የትኛው ስርዓተ ክወና / ሼል, ምን ገደቦች አሉት?
  2. የደህንነት መስመሮችን ይጠይቁ. በ bash, set -euo pipefail (ስህተቱ ላይ ይቁም, ባልተገለጸ ተለዋዋጭ ላይ ያቁሙ), ለአደገኛ ስራዎች የማረጋገጫ ጥያቄ, ከመሰረዝ ይልቅ መጀመሪያ ይንቀሳቀሱ.
  3. ደረቅ አሂድ ሁነታን ጠይቅ። ስክሪፕቱ ምን እንደሚደረግ ይፃፍ --ደረቅ-ሩጥ፣ ግን አታድርጉት።
  4. አንብብ እና ተረዳ። እያንዳንዱ ረድፍ የሚያደርገውን ያረጋግጡ፣ በተለይም ሰርዝ/አንቀሳቅስ/የአውታረ መረብ ስራዎች።
  5. በገለልተኛ አካባቢ ይሞክሩት። በሙከራ አቃፊ ውስጥ, በናሙና ውሂብ ያሂዱት.
  6. ወደ ምዝግብ ማስታወሻ ያክሉ። በኋላ ላይ እንዲታይ ስክሪፕቱ የሚያደርገውን ይመዝግብ።

የአስተማማኝ ስክሪፕት አስፈላጊ ነገሮች

የምርት ስክሪፕት እነዚህን የጥበቃ መንገዶች ማካተት አለበት፡-

  • በስህተት ማቆም. Bash: አዘጋጅ -euo pipefail. PowerShell፡ $ErrorActionPreference = 'አቁም'። አንድ እርምጃ ካልተሳካ, የሚቀጥሉት መስራት የለባቸውም.
  • አለመቻል (ተደጋጋሚነት)። ስክሪፕቱ ሁለት ጊዜ የሚሠራ ከሆነ ድርብ ጉዳትን ማስተናገድ የለበትም። "አስቀድመህ ካለህ ዝለልው" አመክንዮ።
  • ማጽደቅ እና ማድረቅ. ለአውዳሚ ስራዎች "እርግጠኛ ነህ?" ወይም --ደረቅ አሂድ ባንዲራ።
  • የግቤት ማረጋገጫ። መለኪያዎች እንደተጠበቀው ናቸው? ባዶ ተለዋዋጭ rm -rf "$DIR"/ ወደ rm -rf / አደጋ ሊለውጠው ይችላል።
  • መግባት ምን እና መቼ እንደተከናወነ ይመዝግቡ።
ጠቃሚ ምክር: በባሽ ውስጥ በጣም አደገኛው ስህተት በባዶ ተለዋዋጭ መሰረዝ ነው። rm -rf "$DIR" $DIR ባዶ ከሆነ የስር ማውጫውን ለመሰረዝ ይሞክራል። set -u (ያልተገለጸ ተለዋዋጭ ላይ ማቆም) እና ከመሰረዝዎ በፊት [-n "$DIR" የሚለውን መፈተሽ ሕይወት አድን ነው። ከ AI ስክሪፕቶችን ሲጠይቁ እነዚህን ጥበቃዎች በግልፅ ይጠይቁ።

ደህንነት: ሚስጥራዊ እና አጥፊ ትዕዛዞች

ሁለት ትላልቅ አደጋዎች;

  1. ምስጢሩን ወደ ስክሪፕቱ መክተት። የይለፍ ቃሉ በቶከን ስክሪፕት ውስጥ ግልጽ መሆን የለበትም። ከአካባቢ ተለዋዋጭ ወይም ቮልት ማንበብ አለበት. ስክሪፕቶች ወደ Git ይሄዳሉ; የተቀበረ ሚስጥር ቋሚ መፍሰስ ነው።
  2. አጥፊ ትዕዛዞች. rm -rf, Remove-Item -Recurse -Force, DrOP TABLE, Terraform destroy - እነዚህን በስክሪፕት ውስጥ ሲያዩ ቆም ብለው ያስቡ። በመጀመሪያ በ AI የመነጨውን አጥፊ ትዕዛዝ በጭራሽ አይሞክሩ።
ይጠንቀቁ: AI ን "እነዚህን ፋይሎች የሚያጸዳውን ስክሪፕት እንዲጽፍ" ሲነግሩት, የግኝቱን ወሰን በጥንቃቄ ያንብቡ ... -ሰርዝ ወይም አርም ትዕዛዝ ያዘጋጃል. ምልክት (*) ወይም የተሳሳተ መንገድ መሰረዝ ከሚፈልጉት በላይ ይሰርዛል። ሁልጊዜ ስክሪፕቱን ከመሰረዝ ይልቅ "ለመሰረዝ ዝርዝር" ሁነታን ያስኪዱ።

የሶስት ቋንቋዎች ንጽጽር

መስፈርት

ባሽ

ፒዘን

PowerShell

የት የተሻለ ነው።

የሊኑክስ ሼል, የትእዛዝ ሰንሰለት

ውስብስብ ሎጂክ፣ ኤፒአይ፣ ውሂብ

የዊንዶውስ ደመና አስተዳደር

የመማሪያ ጥምዝ

መካከለኛ (የተያዘ)

ቀላል

መካከለኛ

አያያዝ ላይ ስህተት

set -euo pipefail

ይሞክሩ/በቀር

ይሞክሩ / ይያዙ, -ErrorAction

ተንቀሳቃሽነት

ዩኒክስ/ሊኑክስ/ማክ

በሁሉም ቦታ

ተሻጋሪ መድረክ (PS 7+)

መቼ ነው።

አጭር, ስርዓቱ ይሰራል

አመክንዮ ከ 20 በላይ መስመሮች

ዊንዶውስ / AD / Azure

ሶስት ጥቃቅን ጉዳዮች

ጉዳይ 1 - 2 ሰዓት የእጅ ሥራ በ 5 ደቂቃዎች ውስጥ. አንድ መሐንዲስ በየሳምንቱ ከ40 አገልጋዮች ምዝግብ ማስታወሻዎችን በመሰብሰብ እና በማስቀመጥ 2 ሰዓት ያሳልፍ ነበር። AI ተግባሩን እንዲገልጽ እና -euo pipefail + የደረቅ አሂድ ጥበቃዎችን እንዲያዘጋጅ እና የባሽ ስክሪፕት እንዲፈጥር አድርጓል። መጀመሪያ ስክሪፕቱን በደረቅ አሂድ አረጋግጧል፣ ከዚያ ከታቀደለት ተግባር (ክሮን) ጋር አገናኘው። ሳምንታዊ ስራ ወደ 5 ደቂቃዎች ይቀንሳል እና የሰዎች ስህተት ይወገዳል.

ጉዳይ 2 - ከንቱ ተለዋዋጭ አደጋ ተወግዷል። በ AI በተሰራው የጽዳት ስክሪፕት rm -rf "$TARGET"/* ነበር፣ነገር ግን TARGET የሆነ ቦታ ካልተመደበ ባዶ ሆኖ ቀርቷል። መሐንዲስ ሆኖ ሲያጠና ይህን ተረዳ; set -u እና [ -n "$TARGET"] || የተጨመረው መውጫ 1 መቆጣጠሪያ. በመሞከር ጊዜ ተለዋዋጭው ባዶ ሆኖ ቀረ እና ስክሪፕቱ በአደጋ ሳይሆን በደህና ቆሟል።

ጉዳይ 3 - የተከተተ ማስመሰያ ተያዘ። ለምቾት ሲባል AI TOKEN = "ghp_realtoken" መስመርን ወደ Python ስክሪፕት አክሏል (ለምሳሌ ያህል)። መሐንዲሱ ይህንን አስወግዶ ከአካባቢው ተለዋዋጭ ወደ os.environ["TOKEN] ንባብ ቀይሮ ማስመሰያውን ሰርዞ አድሷል። ስክሪፕቱ ወደ Git ከሄደ ማስመሰያው ይፋዊ ይሆናል።

አራት ሊገለበጡ የሚችሉ አብነቶች

1) ደህንነቱ የተጠበቀ የባሽ ስክሪፕት

የባሽ ስክሪፕት ይጻፉ፡ [TASK]። የግዴታ ህጎች፡- መጀመሪያ ላይ `set -euo pipefail` - ተለዋዋጭው በሚሰረዝበት/በሚንቀሳቀስበት ቦታ ሁሉ ባዶ አለመሆኑን ያረጋግጡ።- `--ደረቅ-አሂድ' ባንዲራ፡ በዚህ ሁነታ ምን ማድረግ እንዳለቦት ይፃፉ ነገር ግን አታድርጉ።- ምስጢሩን አታስቀምጡ። ከአካባቢ ተለዋዋጭ ያንብቡ። - በእያንዳንዱ ደረጃ መረጃ ሰጪ መዝገብ ያትሙ። ስክሪፕቱን አስተያየት ይስጡ እና በጣም አደገኛ የሆነውን መስመር ምልክት ያድርጉ።

2) የስክሪፕት መግለጫ/ቁጥጥር፡-

የሚከተለውን የስክሪፕት መስመር በመስመር ይግለጹ እና ደህንነትን ያረጋግጡ፡ የተከተተ ሚስጥር፣ አጥፊ ትዕዛዝ (rm/አስወግድ-ንጥል/DROP)፣ ያልተረጋገጠ ግብአት፣ የስህተት አያያዝ እጥረት? እያንዳንዱን አደጋ እንደ አስፈላጊነት እና እርማት በቅደም ተከተል ይፃፉ። ስክሪፕት፡ [CODE]

3) የቋንቋ ትርጉም;

ያንን [ምንጭ LANGUAGE] ስክሪፕት ወደ [ዒላማ ቋንቋ] ተርጉም። ባህሪውን በቃላት አቆይ፣ የዒላማውን ቋንቋ ፈሊጥ የስህተት አያያዝን ተጠቀም፣ ማንኛውንም የተከተተ ሚስጥሮችን ወደ አካባቢ ተለዋዋጭ ውሰድ። የተለየ ባህሪ ሊኖራቸው የሚችሉ ነጥቦችን አስተውል። ስክሪፕት፡ [CODE]

4) የታቀደ ተግባር (ክሮን / የታቀደ ተግባር)

ይህን ስክሪፕት ተጠቀም [FREQUENCY: ለምሳሌ. በየምሽቱ 02፡00 ላይ የሚሰራ የጊዜ መርሐግብር ፍቺ ([ክሮን/ሲስተዳድ የሰዓት ቆጣሪ / የዊንዶውስ ተግባር መርሐግብር) ይጻፉ። አለመሳካት ላይ እንዴት እንደሚያስጠነቅቀኝ (የመግቢያ/የመውጣት ኮድ/ማሳወቂያ) እና መደራረብን እንዴት መከላከል እንደሚቻል ጨምሩ።

ደካማ ጥያቄ / ጠንካራ ጥያቄ

ደካማ፡ "የቆዩ ፋይሎችን የሚሰርዝ ስክሪፕት ይፃፉ።"

ውጤት፡ ወሰን የለሽ፣ ያልተጠበቀ፣ ደረቅ የማይሰራ አርም ስክሪፕት; በተሳሳተ አቃፊ ውስጥ የሚሰራ ከሆነ, በማይቀለበስ ሁኔታ ይሰርዛል.

ጠንካራ፡ "ከ30 ቀናት በላይ የቆዩ የሎግ ፋይሎችን በ/var/log/app ለመሰረዝ የባሽ ስክሪፕት ይፃፉ። set -euo pipefail ን ተጠቀም፣ የታለመው ማውጫ ባዶ ከሆነ አቁም፣ ምን መሰረዝ እንዳለብህ ይዘርዝሩ --ደረቅ-አሂድ መጀመሪያ፣ እያንዳንዱን ግብይት ግባ፣ ምስጢሩን አታስገባ። በጣም አደገኛ የሆነውን መስመር ምልክት አድርግ።"

ልዩነት-ሁለተኛው የይገባኛል ጥያቄ ሙሉውን ወሰን, የደህንነት መከላከያ መንገዶችን እና ደረቅ አሂድ ጥበቃን ይሰጣል; ውጤቱ በደህና ሊሠራ ይችላል.

የተለመዱ ስህተቶች

  • ስክሪፕቱን ሳያነቡ ማስኬድ። ረድፎችን ሰርዝ/አንቀሳቅስ በተለይ ወደ ጥፋት ያመራል።
  • ባዶ ተለዋዋጮችን አለመፈተሽ። የስር ማውጫውን በ rm -rf "$X"/ የመሰረዝ ክላሲክ አደጋ።
  • `set -euo pipefail` / `-ErrorAction Stop`ን ዝለል። አንድ እርምጃ ይቃጠላል፣ ስክሪፕቱ በጭፍን ይቀጥላል።
  • ምስጢሩን ወደ ስክሪፕቱ መክተት። ወደ Git የማያቋርጥ መፍሰስ።
  • ያለ ደረቅ-አሂድ አጥፊ ሂደት. በመጀመሪያ "ምን ማድረግ እንዳለብኝ አሳየኝ" እና ከዚያ አድርግ.
  • በፕሮድ ውስጥ የመጀመሪያውን ሙከራ ማድረግ. ያለ ገለልተኛ የሙከራ አካባቢ መሮጥ።

በማጠቃለያው

DevOps ራስ-ሰር ጥበብ ነው; ተደጋጋሚ ስራ ለ Bash፣ Python እና PowerShell ስክሪፕቶች ተሰጥቷል። AI ስክሪፕቶችን ለመቅረጽ፣ ለማረም እና ቋንቋዎችን በመተርጎም ረገድ በጣም ምቹ ነው - ነገር ግን ደህንነቱ የተጠበቀ ስክሪፕት እንደ set-euo pipefail፣ null ተለዋዋጭ ፍተሻ፣ ደረቅ አሂድ ሁነታ፣ የተከተተ ሚስጥራዊነት እና ምዝግብ ማስታወሻዎችን ማካተት አለበት። እያንዳንዱን ስክሪፕት በተለይም አጥፊ ትዕዛዞችን የያዙትን በገለልተኛ አካባቢ ማንበብ እና መሞከር የእርስዎ ሃላፊነት ነው።

የመተግበሪያ ተግባር

ተደጋጋሚ ተግባር ይምረጡ (ምዝግብ ማስታወሻ, ምትኬ, ማጽዳት). (1) AI በ"Secure Bash script" አብነት የተጠበቀ ስክሪፕት እንዲፈጥር ያድርጉ። (2) እንደ "የስክሪፕት መግለጫ/ኦዲት" አብነት ተመሳሳይ ስክሪፕት ለደህንነት እንዲረጋገጥ ያድርጉ እና AI የጠቆመውን በጣም አደገኛ መስመር ያግኙ። (3) ስክሪፕቱን በናሙና ፋይሎች በሙከራ ማህደር ውስጥ በማስኬድ ባህሪውን ያረጋግጡ፣ በመጀመሪያ --ደረቅ አሂድ።

የማረጋገጫ ዝርዝር

  • [ ] የማልፈልገውን ተግባር፣ የስርዓተ ክወናውን/ሼል እና የጥበቃ መንገዶችን ጻፍኩ።
  • [] ስክሪፕቱ እንደ set -euo pipefail / -ErrorAction Stop የማቆም ስህተት አለበት።
  • [] ከመሰረዝ/ከመንቀሳቀስ በፊት ባዶ ተለዋዋጭ እና የግቤት ፍተሻ ጨምሬያለሁ።
  • [ ] ለአጥፊ ስራዎች --ደረቅ አሂድ/ማረጋገጫ ዘዴ አለ።
  • [] በስክሪፕቱ ውስጥ የተካተተ ምንም ሚስጥር የለም; እሴቶቹ ከአካባቢው ተለዋዋጭ / ጉዳይ ይመጣሉ.
  • [ ] የመጀመሪያውን ሙከራ ያደረግሁት ገለልተኛ በሆነ የፈተና አካባቢ በደረቅ ሩጫ ነው።