„Shell“ scenarijaus naudojimas automatizuojant „Linux“ sistemos priežiūros užduotis
Prieš kurį laiką skaičiau, kad viena iš skiriamųjų veiksmingo sistemos administratoriaus / inžinieriaus savybių yra tinginystė. Iš pradžių tai atrodė šiek tiek prieštaringa, tačiau vėliau autorius paaiškino, kodėl:
RHCE serija: „Linux“ sistemos priežiūros užduočių automatizavimas. 4 dalis
jei sistemos administratorius didžiąją laiko dalį praleidžia spręsdamas problemas ir atlikdamas pasikartojančias užduotis, galite įtarti, kad jis ar ji elgiasi ne taip. Kitaip tariant, veiksmingas sistemos administratorius / inžinierius turėtų parengti planą, kaip atlikti pasikartojančias užduotis su kuo mažiau veiksmų, ir turėtų numatyti problemas naudojant,
pavyzdžiui, 3 dalyje apžvelgtos priemonės - Stebėkite sistemos veiklos ataskaitas naudodami „Linux“ įrankių rinkinius šios serijos. Taigi, nors atrodo, kad jis ar ji nedaug ką daro, taip yra todėl, kad dauguma jo pareigų turi buvo pasirūpinta apvalkalo scenarijaus pagalba, apie ką mes čia ir kalbėsime pamoka.
Kas yra apvalkalo scenarijus?
Keliais žodžiais tariant, apvalkalo scenarijus yra ne kas kita, nei programa, vykdoma žingsnis po žingsnio apvalkalu, kuri yra dar viena programa, suteikianti sąsajos sluoksnį tarp „Linux“ branduolio ir pabaigos Vartotojas.
Pagal numatytuosius nustatymus apvalkalas naudojamas naudotojų paskyroms RHEL 7 yra bash (/bin/bash). Jei norite išsamaus aprašymo ir istorinio pagrindo, galite kreiptis į šis Vikipedijos straipsnis.
Norėdami sužinoti daugiau apie didžiulį šio apvalkalo teikiamų funkcijų rinkinį, galbūt norėsite jį patikrinti vyras puslapis, kuris atsisiųstas PDF formatu adresu (Bash komandos). Daroma prielaida, kad esate susipažinęs su „Linux“ komandomis (jei ne, primygtinai patariu tai atlikti Vadovas nuo naujokų iki „SysAdmin“ straipsnyje Tecmint.com prieš tęsiant). Dabar pradėkime.
Rašant scenarijų sistemos informacijai rodyti
Kad būtų patogiau, sukurkime katalogą, kuriame bus saugomi apvalkalo scenarijai:
# mkdir scenarijai. # cd scenarijai.
Ir atidarykite naują teksto failą pavadinimu system_info.sh su pageidaujamu teksto redaktoriumi. Pradėsime įterpdami keletą komentarų viršuje ir keletą komandų vėliau:
#!/bin/bash # Pavyzdinis scenarijus, parašytas RHCE serijos 4 daliai. # Šis scenarijus grąžins tokį sistemos informacijos rinkinį: # -Pavardės informacija: echo -e "\ e [31; 43m ***** PAGRINDINĖ INFORMACIJA***** \ e [0 m " hostnamectl. aidas "" # -Failų sistemos disko vietos naudojimas: echo -e "\ e [31; 43m *****Failų sistemos disko vietos naudojimas***** \ e [0 m " df -h. aidas "" # -Nemokama ir naudojama atmintis sistemoje: echo -e "\ e [31; 43m *****NEMOKAMA IR NAUDOTA ATMINTIS***** \ e [0 m " Laisvas. aidas "" # -Sistemos veikimo laikas ir apkrova: echo -e "\ e [31; 43m *****SISTEMOS LAIKOTARPIS IR KROVAS***** \ e [0 m " veikimo laikas. aidas "" # -Prisijungę vartotojai: echo -e "\ e [31; 43m *****DABAR PRISIJUNGUSI VARTOTOJAI***** \ e [0 m " PSO. aidas "" # -5 geriausi procesai, susiję su atminties naudojimu. aidas -e "\ e [31; 43 m *****5 ATMINTIES VARTOJIMO PROCESAI***** \ e [0 m " ps -eo%mem,%cpu, comm --sort = -%mem | galva -n 6. aidas "" echo -e "\ e [1; 32 min. Atlikta. \ e [0 m"
Tada suteikite scenarijui vykdyti leidimus:
# chmod +x system_info.sh.
ir paleiskite:
./system_info.sh.
Atminkite, kad kiekvienos sekcijos antraštės rodomos spalvomis, kad būtų geriau vizualizuojama:
Serverio stebėjimo apvalkalo scenarijus
Šią funkciją suteikia ši komanda:
aidas -e "\ e [COLOR1; COLOR2m\ e [0 m "
Kur SPALVA1 ir SPALVA2 yra atitinkamai priekinio ir fono spalvos (daugiau informacijos ir parinkčių paaiškinta šiame įraše iš Arch Linux Wiki) ir yra eilutė, kurią norite parodyti spalvotai.
Automatizuojančios užduotys
Užduotys, kurias gali tekti automatizuoti, kiekvienu atveju gali skirtis. Taigi mes negalime apimti visų galimų scenarijų viename straipsnyje, tačiau pateiksime tris klasikines užduotis, kurias galima automatizuoti naudojant apvalkalo scenarijų:
1) atnaujinkite vietinę failų duomenų bazę, 2) suraskite (ir alternatyviai ištrinkite) failus naudodami 777 leidimus ir 3) įspėti, kai failų sistemos naudojimas viršija nustatytą ribą.
Sukurkime failą pavadinimu auto_tasks.sh mūsų scenarijų kataloge su tokiu turiniu:
#!/bin/bash # Pavyzdinis scenarijus, skirtas automatizuoti užduotis: # -Atnaujinti vietinę failų duomenų bazę: echo -e "\ e [4; 32 mATNAUJINAMA VIETINIŲ Bylų duomenų bazė\ e [0 m " atnaujintab. jei [$? == 0 ]; tada echo "Vietinė failų duomenų bazė buvo atnaujinta teisingai". else echo "Vietinė failų duomenų bazė nebuvo tinkamai atnaujinta." fi. echo "" # -Raskite ir (arba) ištrinkite failus su 777 leidimais. aidas -e "\ e [4; 32mIEŠKOMA DOKUMENTŲ SU 777 LEIDIMAIS\ e [0 m " # Įgalinkite bet kurią parinktį (komentuokite kitą eilutę), bet ne abi. # 1 variantas: ištrinkite failus neprašydami patvirtinimo. Manoma, kad radinio GNU versija. #find -type f -perm 0777 -trinti. # 2 variantas: prieš ištrindami failus paprašykite patvirtinimo. Labiau nešiojamas visose sistemose. rasti -type f -perm 0777 -exec rm -i {} +; aidas "" # -Įspėjimas, kai failų sistemos naudojimas viršija nustatytą ribą echo -e "\ e [4; 32 mFILIŲ SISTEMOS NAUDOJIMO TIKRINIMAS\ e [0 m " THRESHOLD = 30. skaitant eilutę; do # Šis kintamasis saugo failų sistemos kelią kaip eilutę FILESYSTEM = $ (echo $ line | awk '{print $ 1}') # This kintamasis išsaugo naudojimo procentą (XX %) PERCENTAGE = $ (echo $ line | awk '{print $ 5}') # Naudojimo procentas be % ženklas. NAUDOJIMAS = $ {PERCENTAGE%?}, Jei [$ USAGE -gt $ THRESHOLD]; tada aidas "Likusi laisva vieta $ FILESYSTEM yra kritiškai maža. Naudota: $ PERCENTAGE "fi. padaryta <
Atminkite, kad tarp jų yra tarpas < ženklai paskutinėje scenarijaus eilutėje.
„Shell“ scenarijus, skirtas 777 leidimams rasti
Naudojant Cron
Jei norite žengti dar vieną žingsnį į priekį, nenorėsite sėdėti prie kompiuterio ir rankiniu būdu paleisti tuos scenarijus. Greičiau naudosite cron suplanuoti, kad tos užduotys būtų vykdomos periodiškai, ir siunčia rezultatus el. paštu į iš anksto nustatytą gavėjų sąrašą arba išsaugo juos faile, kurį galima peržiūrėti naudojant žiniatinklio naršyklę.
Šis scenarijus (filesystem_usage.sh) veiks gerai žinomas df -h komandą, suformatuokite išvestį į HTML lentelę ir išsaugokite ją report.html failas:
#!/bin/bash. # Pavyzdinis scenarijus, skirtas HTML ataskaitos kūrimui naudojant apvalkalo scenarijų. # Žiniatinklio katalogas. WEB_DIR =/var/www/html. # Šiek tiek CSS ir lentelės išdėstymo, kad ataskaita atrodytų šiek tiek gražesnė. aidas ""> $ WEB_DIR/report.html. # Peržiūrėkite pagrindinio kompiuterio pavadinimą ir įterpkite jį į HTML turinio viršų. HOST = $ (pagrindinio kompiuterio pavadinimas) echo "Failų sistemos naudojimas pagrindiniam kompiuteriui$ HOST
Paskutinį kartą atnaujinta: $ (data)
Mūsų RHEL 7 serveris (192.168.0.18), tai atrodo taip:
Serverio stebėjimo ataskaita
Prie ataskaitos galite pridėti tiek informacijos, kiek norite. Norėdami paleisti scenarijų kiekvieną dieną 13:30 val, pridėkite šį crontab įrašą:
30 13 * * * /root/scripts/filesystem_usage.sh.
Santrauka
Greičiausiai sugalvosite keletą kitų užduočių, kurias norite arba reikia automatizuoti; kaip matote, naudojant „shell“ scenarijų, šios pastangos bus labai supaprastintos. Nedvejodami praneškite mums, jei šis straipsnis jums buvo naudingas, ir nedvejodami pridėkite savo idėjų ar komentarų naudodami žemiau esančią formą.