Amfani da Rubutun Shell don sarrafa Ayyukan Kula da Tsarin Linux - Kashi na 4


Wani lokaci da ya gabata na karanta cewa ɗayan bambance-bambancen halayen ingantaccen tsarin gudanarwa/injiniya shine kasala. Da farko dai ya dan yi karo da juna amma marubucin ya ci gaba da bayyana dalilin da ya sa:

idan sysadmin yana ciyar da mafi yawan lokacinsa yana magance matsaloli da yin ayyuka masu maimaitawa, za ku iya zargin ba ya yin abubuwa daidai. A takaice dai, ingantaccen mai kula da tsarin/injiniya ya kamata ya samar da tsari don aiwatar da ayyuka masu maimaitawa tare da ƙarancin aiki a ɓangarensa gwargwadon yiwuwa, kuma yakamata ya hango matsaloli ta amfani da,

misali, kayan aikin da aka duba a cikin Sashe na 3 - Kula da Rahotannin Ayyukan Tsari Ta Amfani da Kayan aikin Linux na wannan jerin. Don haka, ko da yake shi ko ita ba ta yi wani abu da yawa ba, saboda yawancin ayyukansa an kula da su tare da taimakon rubutun harsashi, wanda shine abin da za mu yi magana akai a cikin wannan koyawa.

Menene rubutun harsashi?

A cikin 'yan kalmomi, rubutun harsashi ba kome ba ne kuma ba kome ba ne illa shirin da ake aiwatar da shi mataki-mataki ta hanyar harsashi, wanda shine wani shirin da ke ba da damar sadarwa tsakanin Linux kernel da mai amfani da ƙarshe.

Ta hanyar tsoho, harsashi da ake amfani da shi don asusun mai amfani a cikin RHEL 7 shine bash (/ bin/bash). Idan kuna son cikakken bayanin da wasu bayanan tarihi, kuna iya komawa zuwa wannan labarin Wikipedia.

Don neman ƙarin bayani game da ƙaƙƙarfan fasalin fasalin da wannan harsashi ya bayar, kuna iya duba shafinsa na mutum, wanda aka zazzage shi a cikin tsarin PDF a (Jagora daga Sabbin zuwa labarin SysAdmin a cikin linux-console.net kafin ci gaba). Yanzu bari mu fara.

Rubuta rubutun don nuna bayanan tsarin

Don dacewarmu, bari mu ƙirƙiri adireshi don adana rubutun harsashi:

# mkdir scripts
# cd scripts

Kuma buɗe sabon fayil ɗin rubutu mai suna system_info.sh tare da editan rubutu da kuka fi so. Za mu fara da saka ƴan sharhi a sama da wasu umarni daga baya:

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

Na gaba, ba da rubutun aiwatar da izini:

# chmod +x system_info.sh

da gudu shi:

./system_info.sh

Lura cewa ana nuna kawunan kowane sashe cikin launi don ingantacciyar gani:

An bayar da wannan aikin ta wannan umarni:

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

Inda COLOR1 da COLOR2 sune launuka na gaba da baya, bi da bi (an yi bayanin ƙarin bayani da zaɓuɓɓuka a cikin wannan shigarwar daga Arch Linux Wiki) kuma shine kirtani da kuke son nunawa cikin launi.

Ayyuka masu sarrafa kansa

Ayyukan da ƙila za ku buƙaci sarrafa ta atomatik na iya bambanta daga shari'a zuwa harka. Don haka, ba za mu iya yiwuwa mu rufe duk abubuwan da za su yiwu a cikin labarin ɗaya ba, amma za mu gabatar da ayyuka na yau da kullun waɗanda za a iya sarrafa su ta hanyar amfani da rubutun harsashi:

1) sabunta bayanan fayil ɗin gida, 2) nemo (da madadin share) fayiloli tare da izini 777, da 3) faɗakarwa lokacin amfani da tsarin fayil ya wuce ƙayyadaddun iyaka.

Bari mu ƙirƙiri fayil mai suna auto_tasks.sh a cikin kundin rubutun mu tare da abun ciki mai zuwa:

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

Lura cewa akwai sarari tsakanin alamomin < biyu a layin karshe na rubutun.

Amfani da Cron

Don ɗaukar inganci mataki ɗaya gaba, ba za ku so ku zauna a gaban kwamfutarka ba kuma ku gudanar da waɗannan rubutun da hannu. Maimakon haka, za ku yi amfani da cron don tsara waɗannan ayyuka don gudana akai-akai kuma aika sakamakon zuwa jerin abubuwan da aka ƙayyade ta imel ko ajiye su zuwa fayil ɗin da za a iya gani ta amfani da mai binciken gidan yanar gizo.

Rubutun mai zuwa (filesystem_usage.sh) zai gudanar da sanannen umarnin df -h, tsara fitarwa zuwa teburin HTML kuma adana shi a cikin fayil ɗin rahoton.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

A cikin uwar garken RHEL 7 (192.168.0.18), wannan yana kama da haka:

Kuna iya ƙara zuwa wannan rahoton gwargwadon bayanin yadda kuke so. Don gudanar da rubutun kowace rana a 1:30 na rana, ƙara shigarwar crontab mai zuwa:

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

Takaitawa

Wataƙila za ku yi tunanin wasu ayyuka da yawa waɗanda kuke so ko buƙatar sarrafa kansu; kamar yadda kuke gani, yin amfani da rubutun harsashi zai sauƙaƙa wannan ƙoƙarin sosai. Jin kyauta don sanar da mu idan kun sami wannan labarin yana taimakawa kuma kada ku yi shakka don ƙara ra'ayoyinku ko sharhi ta hanyar fom ɗin da ke ƙasa.