Cu ceva timp în urmă am citit că una dintre caracteristicile distinctive ale unui administrator / inginer de sistem eficient este lenea. La început părea puțin contradictoriu, dar autorul a continuat apoi să explice de ce:
dacă un administrator de sistem își petrece cea mai mare parte a timpului rezolvând probleme și îndeplinind sarcini repetitive, puteți suspecta că el sau ea nu face lucrurile destul de bine. Cu alte cuvinte, un administrator / inginer de sistem eficient ar trebui să elaboreze un plan pentru a efectua sarcini repetitive cu o acțiune cât mai mică din partea sa / ei și ar trebui să prevadă probleme prin utilizarea,
de exemplu, instrumentele revizuite în partea 3 - Monitorizați rapoartele de activitate ale sistemului folosind seturile de instrumente Linux din această serie. Astfel, deși el sau ea nu pare să facă prea multe, este din cauză că majoritatea responsabilităților sale au a fost îngrijit cu ajutorul scripturilor shell, despre care vom vorbi în acest sens tutorial.
În câteva cuvinte, un script shell este nimic mai mult și nimic mai puțin decât un program care se execută pas cu pas de un shell, care este un alt program care oferă un strat de interfață între nucleul Linux și final utilizator.
În mod implicit, shell-ul utilizat pentru conturile de utilizator din RHEL 7 este bash (/bin/bash). Dacă doriți o descriere detaliată și un istoric, puteți face referire la acest articol Wikipedia.
Pentru a afla mai multe despre setul enorm de caracteristici oferite de acest shell, vă recomandăm să verificați pagina man, care este descărcat în format PDF de la (Comenzi Bash). În afară de asta, se presupune că sunteți familiarizați cu comenzile Linux (dacă nu, vă sfătuiesc cu tărie să treceți prin Un ghid de la începători la SysAdmin articol în Tecmint.com înainte de a începe). Acum să începem.
Pentru confortul nostru, să creăm un director pentru a stoca scripturile noastre shell:
# scripturi mkdir. # cd scripturi.
Și deschideți un nou fișier text numit system_info.sh
cu editorul de text preferat. Vom începe prin a insera câteva comentarii în partea de sus și câteva comenzi după aceea:
#! / bin / bash # Exemplu de script scris pentru partea 4 din seria RHCE. # Acest script va returna următorul set de informații despre sistem: # -Informații despre numele gazdei: echo -e "\ e [31; 43m ***** INFORMAȚII PRIVIND GĂȘTIREA***** \ e [0m " hostnamectl. ecou "" # -Utilizarea spațiului pe disc al sistemului: echo -e "\ e [31; 43m *****SISTEM DE FISCARE UTILIZAREA SPATIULUI DISCULUI***** \ e [0m " df -h. ecou "" # -Memorie gratuită și utilizată în sistem: echo -e "\ e [31; 43m *****MEMORIE GRATUITĂ ȘI UTILIZATĂ***** \ e [0m " gratuit. ecou "" # -Timp de funcționare și încărcare a sistemului: echo -e "\ e [31; 43m *****TIMP DE ACTIVARE ȘI ÎNCĂRCARE***** \ e [0m " disponibilitate. ecou "" # -Utilizatori conectați: echo -e "\ e [31; 43m *****UTILIZATORI CONECTATI ÎN CURENT***** \ e [0m " care. ecou "" # -Top 5 procese în ceea ce privește utilizarea memoriei. echo -e "\ e [31; 43m *****TOP 5 PROCESE DE CONSUMARE A MEMORIEI***** \ e [0m " ps -eo% mem,% cpu, comm --sort = -% mem | cap -n 6. ecou "" echo -e "\ e [1; 32mDone. \ e [0m"
Apoi, acordați scriptului permisiunile de executare:
# chmod + x system_info.sh.
și rulați-l:
./system_info.sh.
Rețineți că antetele fiecărei secțiuni sunt afișate în culori pentru o vizualizare mai bună:
Această funcționalitate este oferită de această comandă:
echo -e "\ e [COLOR1; COLOR2m\ e [0m "
Unde CULOARE1 și CULOARE2 sunt culorile de prim-plan și de fundal, respectiv (mai multe informații și opțiuni sunt explicate în această intrare din Arch Linux Wiki) și este șirul pe care doriți să îl arătați color.
Sarcinile pe care poate fi necesar să le automatizați pot varia de la caz la caz. Astfel, nu putem acoperi toate scenariile posibile într-un singur articol, dar vom prezenta trei sarcini clasice care pot fi automatizate folosind scripturi shell:
1) actualizați baza de date de fișiere locale, 2) găsiți (și, alternativ, ștergeți) fișiere cu 777 permisiuni și 3) alertă când utilizarea sistemului de fișiere depășește o limită definită.
Să creăm un fișier numit auto_tasks.sh
în directorul nostru de scripturi cu următorul conținut:
#! / bin / bash # Exemplu de script pentru automatizarea sarcinilor: # -Actualizați baza de date de fișiere locale: echo -e "\ e [4; 32mACTUALIZAREA BAZEI DE DATE A FIȘIERELOR LOCALE\ e [0m " actualizatb. dacă [$? == 0 ]; apoi ecou „Baza de date de fișiere locale a fost actualizată corect.” else echo "Baza de date de fișiere locale nu a fost actualizată corect." fi. echo "" # -Găsiți și / sau ștergeți fișiere cu 777 permisiuni. echo -e "\ e [4; 32mCĂUTĂ FIȘIERE CU 777 AUTORIZĂRI\ e [0m " # Activați oricare dintre opțiuni (comentați cealaltă linie), dar nu ambele. # Opțiunea 1: Ștergeți fișierele fără a solicita confirmarea. Presupune versiunea GNU a find. #find -type f -perm 0777 -delete. # Opțiunea 2: cereți confirmarea înainte de a șterge fișiere. Mai portabil pe sisteme. find -type f -perm 0777 -exec rm -i {} +; ecou "" # -Avertizare când utilizarea sistemului de fișiere depășește o limită definită echo -e "\ e [4; 32mVERIFICAREA UTILIZĂRII SISTEMULUI DE FIȘIERE\ e [0m " PRAT = 30. în timp ce citiți linia; do # Această variabilă stochează calea sistemului de fișiere ca un șir FILESYSTEM = $ (echo $ line | awk '{print $ 1}') # This variabila stochează procentul de utilizare (XX%) PORCENTARE = $ (echo $ line | awk '{print $ 5}') # Procentaj de utilizare fără% semn. UTILIZARE = $ {PERCENTAGE%?} Dacă [$ UTILIZARE -gt $ SORIE]; apoi ecou „Spațiul disponibil rămas în $ FILESYSTEM este extrem de scăzut. Folosit: $ PORCENTAGE "fi. făcut <Vă rugăm să rețineți că există un spațiu între cele două
<
semnează în ultimul rând al scenariului.Folosind Cron
Pentru a face eficiența cu un pas mai departe, nu veți dori să vă așezați în fața computerului și să rulați aceste scripturi manual. Mai degrabă, veți folosi cron pentru a programa acele sarcini pentru a rula periodic și trimite rezultatele către o listă predefinită de destinatari prin e-mail sau pentru a le salva într-un fișier care poate fi vizualizat utilizând un browser web.
Următorul script (filesystem_usage.sh) va rula binecunoscutul df -h, formatați ieșirea într-un tabel HTML și salvați-o în report.html fişier:
#! / bin / bash. # Exemplu de script pentru a demonstra crearea unui raport HTML folosind scripturi shell. # Director web. WEB_DIR = / var / www / html. # Puțin aspect CSS și tabel pentru a face raportul să arate puțin mai frumos. ecou ""> $ WEB_DIR / report.html. # Vizualizați numele gazdei și introduceți-l în partea de sus a corpului html. HOST = $ (nume gazdă) echo "Utilizarea sistemului de fișiere pentru gazdă$ HOST
Ultima actualizare: $ (data)
Sistemul de fișiere | mărimea | Utilizare % |
---|---|---|
">> $ WEB_DIR / report.html. echo $ line | awk '{print $ 1}' >> $ WEB_DIR / report.html. ecou " | ">> $ WEB_DIR / report.html. echo $ line | awk '{print $ 2}' >> $ WEB_DIR / report.html. ecou " | ">> $ WEB_DIR / report.html. echo $ line | awk '{print $ 5}' >> $ WEB_DIR / report.html. ecou " |