L-użu ta' Shell Scripting biex Awtomatizza l-Kompiti ta' Manutenzjoni tas-Sistema Linux - Parti 4
Xi żmien ilu qrajt li waħda mill-karatteristiċi distintivi ta 'amministratur/inġinier tas-sistema effettiva hija l-għażż. Fil-bidu dehret xi ftit kontradittorja iżda l-awtur imbagħad ipproċeda biex jispjega għaliex:
jekk sysadmin iqatta 'ħafna mill-ħin tiegħu jsolvi l-kwistjonijiet u jagħmel kompiti ripetittivi, tista' tissuspetta li hu jew hi mhux qed jagħmel l-affarijiet sewwa. Fi kliem ieħor, amministratur/inġinier tas-sistema effettiv għandu jiżviluppa pjan biex iwettaq kompiti ripetittivi bl-inqas azzjoni possibbli min-naħa tiegħu/tagħha, u għandu jipprevedi problemi billi juża,
pereżempju, l-għodod riveduti fil-Parti 3 – Monitoraġġ tar-Rapporti tal-Attività tas-Sistema Bl-Użu ta’ Sett ta’ Għodda tal-Linux ta’ din is-serje. Għalhekk, għalkemm jidher li ma tantx qed jagħmel, huwa għaliex il-biċċa l-kbira tar-responsabbiltajiet tiegħu/tagħha ttieħdu ħsieb bl-għajnuna tal-shell scripting, li huwa dak li se nitkellmu dwaru f’dan it-tutorja.
X'inhu script shell?
Fi ftit kliem, script shell huwa xejn aktar u xejn inqas minn programm li jiġi esegwit pass pass minn qoxra, li huwa programm ieħor li jipprovdi saff ta 'interface bejn il-kernel tal-Linux u l-utent aħħari.
B'mod awtomatiku, il-qoxra użata għall-kontijiet tal-utent f'RHEL 7 hija bash (/bin/bash). Jekk trid deskrizzjoni dettaljata u xi sfond storiku, tista' tirreferi għal dan l-artiklu tal-Wikipedija.
Biex issir taf aktar dwar is-sett enormi ta 'karatteristiċi pprovduti minn din il-qoxra, tista' tkun trid tiċċekkja l-paġna man tagħha, li titniżżel f'format PDF fuq (Gwida minn Newbies għal artikolu SysAdmin f'linux-console.net qabel ma tipproċedi). Issa ejja nibdew.
Kitba ta 'skript biex turi l-informazzjoni tas-sistema
Għall-konvenjenza tagħna, ejja noħolqu direttorju biex taħżen l-iskripts tal-qoxra tagħna:
# mkdir scripts # cd scripts
U iftaħ fajl test ġdid bl-isem system_info.sh
bl-editur tat-test preferut tiegħek. Nibdew billi ndaħħlu ftit kummenti fil-quċċata u xi kmandi wara:
#!/bin/bash # Sample script written for Part 4 of the RHCE series # This script will return the following set of system information: # -Hostname information: echo -e "\e[31;43m***** HOSTNAME INFORMATION *****\e[0m" hostnamectl echo "" # -File system disk space usage: echo -e "\e[31;43m***** FILE SYSTEM DISK SPACE USAGE *****\e[0m" df -h echo "" # -Free and used memory in the system: echo -e "\e[31;43m ***** FREE AND USED MEMORY *****\e[0m" free echo "" # -System uptime and load: echo -e "\e[31;43m***** SYSTEM UPTIME AND LOAD *****\e[0m" uptime echo "" # -Logged-in users: echo -e "\e[31;43m***** CURRENTLY LOGGED-IN USERS *****\e[0m" who echo "" # -Top 5 processes as far as memory usage is concerned echo -e "\e[31;43m***** TOP 5 MEMORY-CONSUMING PROCESSES *****\e[0m" ps -eo %mem,%cpu,comm --sort=-%mem | head -n 6 echo "" echo -e "\e[1;32mDone.\e[0m"
Sussegwentement, agħti l-permessi tal-eżekuzzjoni tal-iskritt:
# chmod +x system_info.sh
u mexxiha:
./system_info.sh
Innota li l-intestaturi ta' kull taqsima huma murija bil-kulur għal viżwalizzazzjoni aħjar:
Dik il-funzjonalità hija pprovduta minn dan il-kmand:
echo -e "\e[COLOR1;COLOR2m<YOUR TEXT HERE>\e[0m"
Fejn COLOR1 u COLOR2 huma l-kuluri ta’ tagħrif miksub u ta’ sfond, rispettivament (aktar informazzjoni u għażliet huma spjegati f’din l-entrata mill-Arch Linux Wiki) u
Awtomatizzazzjoni tal-Kompiti
Il-kompiti li jista' jkollok bżonn tawtomatizza jistgħu jvarjaw minn każ għal ieħor. Għalhekk, ma nistgħux possibbilment ikopru x-xenarji kollha possibbli f'artikolu wieħed, iżda se nippreżentaw tliet kompiti klassiċi li jistgħu jiġu awtomatizzati bl-użu ta 'scripting tal-qoxra:
1) taġġorna d-database tal-fajls lokali, 2) issib (u alternattivament ħassar) fajls b'777 permess, u 3) twissi meta l-użu tas-sistema tal-fajls jaqbeż limitu definit.
Ejja noħolqu fajl bl-isem auto_tasks.sh
fid-direttorju tal-iskripts tagħna bil-kontenut li ġej:
#!/bin/bash # Sample script to automate tasks: # -Update local file database: echo -e "\e[4;32mUPDATING LOCAL FILE DATABASE\e[0m" updatedb if [ $? == 0 ]; then echo "The local file database was updated correctly." else echo "The local file database was not updated correctly." fi echo "" # -Find and / or delete files with 777 permissions. echo -e "\e[4;32mLOOKING FOR FILES WITH 777 PERMISSIONS\e[0m" # Enable either option (comment out the other line), but not both. # Option 1: Delete files without prompting for confirmation. Assumes GNU version of find. #find -type f -perm 0777 -delete # Option 2: Ask for confirmation before deleting files. More portable across systems. find -type f -perm 0777 -exec rm -i {} +; echo "" # -Alert when file system usage surpasses a defined limit echo -e "\e[4;32mCHECKING FILE SYSTEM USAGE\e[0m" THRESHOLD=30 while read line; do # This variable stores the file system path as a string FILESYSTEM=$(echo $line | awk '{print $1}') # This variable stores the use percentage (XX%) PERCENTAGE=$(echo $line | awk '{print $5}') # Use percentage without the % sign. USAGE=${PERCENTAGE%?} if [ $USAGE -gt $THRESHOLD ]; then echo "The remaining available space in $FILESYSTEM is critically low. Used: $PERCENTAGE" fi done < <(df -h --total | grep -vi filesystem)
Jekk jogħġbok innota li hemm spazju bejn iż-żewġ sinjali <
fl-aħħar linja tal-iskrittura.
Bl-użu ta' Cron
Biex tieħu l-effiċjenza pass ieħor, ma tkunx trid toqgħod bilqiegħda quddiem il-kompjuter tiegħek u tmexxi dawk l-iskripts manwalment. Pjuttost, se tuża cron biex tiskeda dawk il-kompiti biex jaħdmu fuq bażi perjodika u tibgħat ir-riżultati lil lista predefinita ta 'riċevituri permezz ta' email jew issalvahom f'fajl li jista 'jaraha permezz ta' web browser.
L-iskript li ġej (filesystem_usage.sh) se jħaddem il-kmand df -h magħruf, jifformattja l-output f'tabella HTML u ssalvah fil-fajl rapport.html:
#!/bin/bash # Sample script to demonstrate the creation of an HTML report using shell scripting # Web directory WEB_DIR=/var/www/html # A little CSS and table layout to make the report look a little nicer echo "<HTML> <HEAD> <style> .titulo{font-size: 1em; color: white; background:#0863CE; padding: 0.1em 0.2em;} table { border-collapse:collapse; } table, td, th { border:1px solid black; } </style> <meta http-equiv='Content-Type' content='text/html; charset=UTF-8' /> </HEAD> <BODY>" > $WEB_DIR/report.html # View hostname and insert it at the top of the html body HOST=$(hostname) echo "Filesystem usage for host <strong>$HOST</strong><br> Last updated: <strong>$(date)</strong><br><br> <table border='1'> <tr><th class='titulo'>Filesystem</td> <th class='titulo'>Size</td> <th class='titulo'>Use %</td> </tr>" >> $WEB_DIR/report.html # Read the output of df -h line by line while read line; do echo "<tr><td align='center'>" >> $WEB_DIR/report.html echo $line | awk '{print $1}' >> $WEB_DIR/report.html echo "</td><td align='center'>" >> $WEB_DIR/report.html echo $line | awk '{print $2}' >> $WEB_DIR/report.html echo "</td><td align='center'>" >> $WEB_DIR/report.html echo $line | awk '{print $5}' >> $WEB_DIR/report.html echo "</td></tr>" >> $WEB_DIR/report.html done < <(df -h | grep -vi filesystem) echo "</table></BODY></HTML>" >> $WEB_DIR/report.html
Fis-server tagħna RHEL 7 (192.168.0.18), dan jidher kif ġej:
Tista' żżid ma' dak ir-rapport informazzjoni kemm trid. Biex tmexxi l-iskript kuljum fis-1:30 pm, żid l-entrata crontab li ġejja:
30 13 * * * /root/scripts/filesystem_usage.sh
Sommarju
X'aktarx ser taħseb f'diversi kompiti oħra li trid jew teħtieġ awtomat; kif tistgħu taraw, l-użu tal-shell scripting se jissimplifika bil-kbir dan l-isforz. Ħossok liberu li tgħarrafna jekk issibx dan l-artikolu utli u toqgħodx lura milli żżid l-ideat jew il-kummenti tiegħek permezz tal-formola hawn taħt.