ലിനക്സ് സിസ്റ്റം മെയിന്റനൻസ് ടാസ്ക്കുകൾ ഓട്ടോമേറ്റ് ചെയ്യാൻ ഷെൽ സ്ക്രിപ്റ്റിംഗ് ഉപയോഗിക്കുന്നു - ഭാഗം 4


ഫലപ്രദമായ ഒരു സിസ്റ്റം അഡ്മിനിസ്ട്രേറ്ററുടെ/എഞ്ചിനീയറുടെ സവിശേഷതകളിലൊന്ന് അലസതയാണെന്ന് കുറച്ച് മുമ്പ് ഞാൻ വായിച്ചു. ആദ്യം ഇത് അൽപ്പം വൈരുദ്ധ്യമായി തോന്നിയെങ്കിലും രചയിതാവ് എന്തുകൊണ്ടെന്ന് വിശദീകരിക്കാൻ തുടങ്ങി:

ഒരു സിസാഡ്uമിൻ തന്റെ സമയത്തിന്റെ ഭൂരിഭാഗവും പ്രശ്uനങ്ങൾ പരിഹരിക്കുന്നതിനും ആവർത്തിച്ചുള്ള ജോലികൾ ചെയ്യുന്നതിനും ചെലവഴിക്കുകയാണെങ്കിൽ, അവൻ അല്ലെങ്കിൽ അവൾ കാര്യങ്ങൾ ശരിയായി ചെയ്യുന്നില്ലെന്ന് നിങ്ങൾക്ക് സംശയിക്കാം. മറ്റൊരു വിധത്തിൽ പറഞ്ഞാൽ, ഫലപ്രദമായ ഒരു സിസ്റ്റം അഡ്മിനിസ്ട്രേറ്റർ/എഞ്ചിനീയർ അവന്റെ/അവളുടെ ഭാഗത്ത് കഴിയുന്നത്ര കുറഞ്ഞ പ്രവർത്തനങ്ങളോടെ ആവർത്തിച്ചുള്ള ജോലികൾ ചെയ്യുന്നതിനുള്ള ഒരു പ്ലാൻ വികസിപ്പിക്കുകയും പ്രശ്നങ്ങൾ മുൻകൂട്ടി കാണുകയും വേണം,

ഉദാഹരണത്തിന്, ഭാഗം 3-ൽ അവലോകനം ചെയ്ത ടൂളുകൾ - ഈ സീരീസിന്റെ Linux ടൂൾസെറ്റുകൾ ഉപയോഗിച്ച് സിസ്റ്റം പ്രവർത്തന റിപ്പോർട്ടുകൾ നിരീക്ഷിക്കുക. അതിനാൽ, അവൻ അല്ലെങ്കിൽ അവൾ കാര്യമായൊന്നും ചെയ്യുന്നില്ലെന്ന് തോന്നുമെങ്കിലും, ഷെൽ സ്uക്രിപ്റ്റിംഗിന്റെ സഹായത്തോടെ അവന്റെ/അവളുടെ മിക്ക ഉത്തരവാദിത്തങ്ങളും നിർവ്വഹിച്ചതിനാലാണ്, ഈ ട്യൂട്ടോറിയലിൽ നമ്മൾ സംസാരിക്കാൻ പോകുന്നത്.

എന്താണ് ഷെൽ സ്ക്രിപ്റ്റ്?

കുറച്ച് വാക്കുകളിൽ പറഞ്ഞാൽ, ഒരു ഷെൽ സ്uക്രിപ്റ്റ് ഒരു ഷെൽ ഉപയോഗിച്ച് പടിപടിയായി നടപ്പിലാക്കുന്ന ഒരു പ്രോഗ്രാമിൽ കുറവല്ല, ലിനക്സ് കേർണലിനും അന്തിമ ഉപയോക്താവിനും ഇടയിൽ ഒരു ഇന്റർഫേസ് ലെയർ നൽകുന്ന മറ്റൊരു പ്രോഗ്രാമാണിത്.

സ്ഥിരസ്ഥിതിയായി, RHEL 7-ലെ ഉപയോക്തൃ അക്കൗണ്ടുകൾക്കായി ഉപയോഗിക്കുന്ന ഷെൽ bash (/bin/bash) ആണ്. വിശദമായ വിവരണവും ചില ചരിത്രപശ്ചാത്തലവും വേണമെങ്കിൽ ഈ വിക്കിപീഡിയ ലേഖനം നോക്കാവുന്നതാണ്.

ഈ ഷെൽ നൽകുന്ന വിപുലമായ ഫീച്ചറുകളെ കുറിച്ച് കൂടുതലറിയാൻ, PDF ഫോർമാറ്റിൽ ഡൗൺലോഡ് ചെയ്uതിരിക്കുന്ന അതിന്റെ മാൻ പേജ് നിങ്ങൾ പരിശോധിക്കണം (തുടരുന്നതിന് മുമ്പ് linux-console.net-ലെ ന്യൂബീസ് മുതൽ SysAdmin ലേഖനം വരെയുള്ള ഒരു ഗൈഡ്). ഇനി നമുക്ക് തുടങ്ങാം.

സിസ്റ്റം വിവരങ്ങൾ പ്രദർശിപ്പിക്കുന്നതിന് ഒരു സ്ക്രിപ്റ്റ് എഴുതുന്നു

ഞങ്ങളുടെ സൗകര്യാർത്ഥം, നമ്മുടെ ഷെൽ സ്ക്രിപ്റ്റുകൾ സംഭരിക്കുന്നതിന് നമുക്ക് ഒരു ഡയറക്ടറി ഉണ്ടാക്കാം:

# mkdir scripts
# cd scripts

നിങ്ങൾ തിരഞ്ഞെടുത്ത ടെക്സ്റ്റ് എഡിറ്റർ ഉപയോഗിച്ച് system_info.sh എന്ന പേരിൽ ഒരു പുതിയ ടെക്സ്റ്റ് ഫയൽ തുറക്കുക. മുകളിൽ കുറച്ച് കമന്റുകളും അതിനുശേഷം ചില കമാൻഡുകളും ചേർത്തുകൊണ്ട് ഞങ്ങൾ ആരംഭിക്കും:

#!/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"

അടുത്തതായി, സ്ക്രിപ്റ്റ് എക്സിക്യൂട്ട് അനുമതികൾ നൽകുക:

# chmod +x system_info.sh

അത് പ്രവർത്തിപ്പിക്കുക:

./system_info.sh

മികച്ച ദൃശ്യവൽക്കരണത്തിനായി ഓരോ വിഭാഗത്തിന്റെയും തലക്കെട്ടുകൾ നിറത്തിൽ കാണിച്ചിരിക്കുന്നു എന്നത് ശ്രദ്ധിക്കുക:

ആ പ്രവർത്തനം ഈ കമാൻഡ് വഴി നൽകുന്നു:

echo -e "\e[COLOR1;COLOR2m<YOUR TEXT HERE>\e[0m"

COLOR1 ഉം COLOR2 ഉം യഥാക്രമം മുൻഭാഗവും പശ്ചാത്തല വർണ്ണങ്ങളും ആകുന്നിടത്ത് (കൂടുതൽ വിവരങ്ങളും ഓപ്ഷനുകളും ആർച്ച് ലിനക്സ് വിക്കിയിൽ നിന്നുള്ള ഈ എൻട്രിയിൽ വിശദീകരിച്ചിരിക്കുന്നു) കൂടാതെ <നിങ്ങളുടെ വാചകം ഇവിടെ> നിങ്ങൾ നിറത്തിൽ കാണിക്കാൻ ആഗ്രഹിക്കുന്ന സ്ട്രിംഗ് ആണ്.

ടാസ്ക്കുകൾ ഓട്ടോമേറ്റ് ചെയ്യുന്നു

നിങ്ങൾ ഓട്ടോമേറ്റ് ചെയ്യേണ്ട ജോലികൾ ഓരോ കേസിലും വ്യത്യാസപ്പെടാം. അതിനാൽ, സാധ്യമായ എല്ലാ സാഹചര്യങ്ങളും ഒരൊറ്റ ലേഖനത്തിൽ ഉൾപ്പെടുത്താൻ ഞങ്ങൾക്ക് കഴിയില്ല, എന്നാൽ ഷെൽ സ്uക്രിപ്റ്റിംഗ് ഉപയോഗിച്ച് ഓട്ടോമേറ്റ് ചെയ്യാൻ കഴിയുന്ന മൂന്ന് ക്ലാസിക് ടാസ്uക്കുകൾ ഞങ്ങൾ അവതരിപ്പിക്കും:

1) ലോക്കൽ ഫയൽ ഡാറ്റാബേസ് അപ്ഡേറ്റ് ചെയ്യുക, 2) 777 അനുമതികളുള്ള ഫയലുകൾ കണ്ടെത്തുക (പകരം ഇല്ലാതാക്കുക), കൂടാതെ 3) ഫയൽസിസ്റ്റം ഉപയോഗം നിർവചിക്കപ്പെട്ട പരിധി മറികടക്കുമ്പോൾ മുന്നറിയിപ്പ് നൽകുക.

ഇനിപ്പറയുന്ന ഉള്ളടക്കം ഉപയോഗിച്ച് നമ്മുടെ സ്ക്രിപ്റ്റ് ഡയറക്uടറിയിൽ auto_tasks.sh എന്ന പേരിൽ ഒരു ഫയൽ സൃഷ്uടിക്കാം:

#!/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)

സ്ക്രിപ്റ്റിന്റെ അവസാന വരിയിലെ രണ്ട് < ചിഹ്നങ്ങൾക്കിടയിൽ ഒരു ഇടമുണ്ടെന്ന് ദയവായി ശ്രദ്ധിക്കുക.

ക്രോൺ ഉപയോഗിക്കുന്നു

കാര്യക്ഷമത ഒരു പടി കൂടി മുന്നോട്ട് കൊണ്ടുപോകുന്നതിന്, നിങ്ങളുടെ കമ്പ്യൂട്ടറിന് മുന്നിൽ ഇരുന്ന് ആ സ്ക്രിപ്റ്റുകൾ സ്വമേധയാ പ്രവർത്തിപ്പിക്കാൻ നിങ്ങൾ ആഗ്രഹിക്കുന്നില്ല. പകരം, ആ ടാസ്uക്കുകൾ ആനുകാലിക അടിസ്ഥാനത്തിൽ പ്രവർത്തിപ്പിക്കുന്നതിന് ഷെഡ്യൂൾ ചെയ്യാൻ നിങ്ങൾ ക്രോൺ ഉപയോഗിക്കും കൂടാതെ ഇമെയിൽ വഴി സ്വീകർത്താക്കളുടെ ഒരു മുൻ ലിസ്റ്റിലേക്ക് ഫലങ്ങൾ അയയ്uക്കുന്നു അല്ലെങ്കിൽ ഒരു വെബ് ബ്രൗസർ ഉപയോഗിച്ച് കാണാൻ കഴിയുന്ന ഒരു ഫയലിലേക്ക് അവരെ സംരക്ഷിക്കും.

ഇനിപ്പറയുന്ന സ്ക്രിപ്റ്റ് (filesystem_usage.sh) അറിയപ്പെടുന്ന df -h കമാൻഡ് പ്രവർത്തിപ്പിക്കുകയും ഔട്ട്പുട്ട് ഒരു HTML ടേബിളിലേക്ക് ഫോർമാറ്റ് ചെയ്യുകയും report.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

ഞങ്ങളുടെ RHEL 7 സെർവറിൽ (192.168.0.18), ഇത് ഇതുപോലെ കാണപ്പെടുന്നു:

നിങ്ങൾക്ക് ആവശ്യമുള്ളത്ര വിവരങ്ങൾ ആ റിപ്പോർട്ടിൽ ചേർക്കാം. എല്ലാ ദിവസവും ഉച്ചയ്ക്ക് 1:30-ന് സ്ക്രിപ്റ്റ് പ്രവർത്തിപ്പിക്കാൻ, ഇനിപ്പറയുന്ന ക്രോണ്ടാബ് എൻട്രി ചേർക്കുക:

30 13 * * * /root/scripts/filesystem_usage.sh

സംഗ്രഹം

നിങ്ങൾക്ക് ആവശ്യമുള്ളതോ യാന്ത്രികമാക്കേണ്ടതോ ആയ മറ്റ് നിരവധി ജോലികളെക്കുറിച്ച് നിങ്ങൾ മിക്കവാറും ചിന്തിക്കും; നിങ്ങൾക്ക് കാണാനാകുന്നതുപോലെ, ഷെൽ സ്ക്രിപ്റ്റിംഗ് ഉപയോഗിക്കുന്നത് ഈ ശ്രമത്തെ വളരെ ലളിതമാക്കും. ഈ ലേഖനം നിങ്ങൾക്ക് സഹായകരമാണെന്ന് തോന്നുകയാണെങ്കിൽ ഞങ്ങളെ അറിയിക്കാൻ മടിക്കേണ്ടതില്ല കൂടാതെ ചുവടെയുള്ള ഫോം വഴി നിങ്ങളുടെ സ്വന്തം ആശയങ്ങളോ അഭിപ്രായങ്ങളോ ചേർക്കാൻ മടിക്കരുത്.