Lilo Ikarahun Ikarahun si Ṣiṣẹ Awọn iṣẹ Itọju Ẹrọ Linux - Apakan 4


Ni akoko diẹ sẹyin Mo ka pe ọkan ninu awọn abuda iyatọ ti oludari eto/ẹrọ ẹlẹrọ ti o munadoko jẹ aisun. O dabi ẹni pe o tako diẹ ni akọkọ ṣugbọn onkọwe lẹhinna tẹsiwaju lati ṣalaye idi:

ti o ba jẹ pe sysadmin lo pupọ julọ ninu akoko rẹ lati yanju awọn ọran ati ṣiṣe awọn iṣẹ atunwi, o le fura pe oun ko ṣe ohun ti o pe ni deede. Ni awọn ọrọ miiran, alakoso eto/onimọ-ẹrọ ti o munadoko yẹ ki o ṣe agbero ero kan lati ṣe awọn iṣẹ atunwi pẹlu iṣẹ ti o kere si apakan rẹ bi o ti ṣee, ati pe o yẹ ki o rii awọn iṣoro tẹlẹ nipa lilo

fun apẹẹrẹ, awọn irinṣẹ ti a ṣe atunyẹwo ni Apakan 3 - Atẹle Awọn Iroyin Iṣẹ ṣiṣe Lilo Lilo Awọn irinṣẹ Irinṣẹ Linux ti jara yii. Nitorinaa, botilẹjẹpe oun tabi o le ma dabi ẹni pe o nṣe pupọ, o jẹ nitori ọpọlọpọ awọn ojuse rẹ ni a ti tọju pẹlu iranlọwọ ti kikọ ikarahun, eyiti o jẹ ohun ti a yoo sọ nipa ẹkọ yii.

Kini iwe afọwọkọ ikarahun kan?

Ni awọn ọrọ diẹ, iwe afọwọkọ ikarahun kii ṣe nkan diẹ sii ko si nkan ti o kere ju eto ti a ṣe ni igbesẹ nipasẹ igbesẹ nipasẹ ikarahun kan, eyiti o jẹ eto miiran ti o pese ipele ti wiwo laarin ekuro Linux ati olumulo ipari.

Nipa aiyipada, ikarahun ti a lo fun awọn iroyin olumulo ni RHEL 7 jẹ bash (/ bin/bash). Ti o ba fẹ apejuwe alaye ati diẹ ninu ipilẹ itan, o le tọka si nkan Wikipedia yii.

Lati wa diẹ sii nipa titobi awọn ẹya ti a pese nipasẹ ikarahun yii, o le fẹ lati ṣayẹwo oju-iwe eniyan rẹ, eyiti o gbasilẹ ni ọna kika PDF ni (Itọsọna kan lati Newbies si nkan SysAdmin ni linux-console.net ṣaaju iṣaaju). Bayi jẹ ki a bẹrẹ.

Kikọ iwe afọwọkọ kan lati ṣafihan alaye eto

Fun irọrun wa, jẹ ki a ṣẹda itọsọna kan lati tọju awọn iwe afọwọkọ ikarahun wa:

# mkdir scripts
# cd scripts

Ati ṣii faili ọrọ tuntun ti a npè ni system_info.sh pẹlu olootu ọrọ ti o fẹ julọ. A yoo bẹrẹ nipasẹ fifi sii awọn asọye diẹ ni oke ati diẹ ninu awọn aṣẹ lẹhinna:

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

Nigbamii, fun iwe afọwọkọ naa ṣiṣẹ awọn igbanilaaye:

# chmod +x system_info.sh

ati ṣiṣe rẹ:

./system_info.sh

Akiyesi pe awọn akọle ti apakan kọọkan han ni awọ fun iworan ti o dara julọ:

Ipese naa ni a pese nipasẹ aṣẹ yii:

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

Nibiti COLOR1 ati COLOR2 jẹ iwaju ati awọn awọ isale, lẹsẹsẹ (alaye diẹ sii ati awọn aṣayan ti wa ni alaye ni titẹsi yii lati Arch Linux Wiki) ati <ẸRỌ TI O NII> ni okun ti o fẹ fi han ni awọ.

Ṣiṣẹ Awọn iṣẹ-ṣiṣe

Awọn iṣẹ ṣiṣe ti o le nilo lati ṣe adaṣe le yatọ lati ọran si ọran. Nitorinaa, a ko le ṣee ṣe bo gbogbo awọn oju iṣẹlẹ ti o ṣee ṣe ninu nkan kan, ṣugbọn a yoo mu awọn iṣẹ-ṣiṣe Ayebaye mẹta ti o le ṣe adaṣe nipa lilo kikọ iwe ikarahun:

1) ṣe imudojuiwọn ibi ipamọ data faili agbegbe, 2) wa (ati paarẹ ni yiyan) awọn faili pẹlu awọn igbanilaaye 777, ati 3) itaniji nigbati lilo faili eto ba kọja opin asọye kan.

Jẹ ki a ṣẹda faili kan ti a npè ni auto_tasks.sh ninu itọsọna awọn iwe afọwọkọ wa pẹlu akoonu atẹle:

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

Jọwọ ṣe akiyesi pe aye wa laarin awọn ami meji < ni ila to kẹhin ti afọwọkọ naa.

Lilo Cron

Lati mu ṣiṣe ni igbesẹ kan siwaju, iwọ kii yoo fẹ lati joko ni iwaju kọnputa rẹ ati ṣiṣe awọn iwe afọwọkọ naa pẹlu ọwọ. Dipo, iwọ yoo lo cron lati ṣeto awọn iṣẹ wọnyẹn lati ṣiṣẹ ni ipilẹ igbakọọkan ati firanṣẹ awọn abajade si atokọ ti a ti ṣaju tẹlẹ ti awọn olugba nipasẹ imeeli tabi fi wọn pamọ si faili kan ti o le wo nipa lilo ẹrọ lilọ kiri lori ayelujara kan.

Iwe afọwọkọ atẹle (filesystem_usage.sh) yoo ṣiṣẹ aṣẹ df -h ti o mọ daradara, ṣe agbejade iṣẹjade sinu tabili HTML kan ki o fi pamọ sinu faili 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

Ninu olupin RHEL 7 wa (192.168.0.18), eyi dabi eleyi:

O le ṣafikun iroyin yẹn bi alaye pupọ bi o ṣe fẹ. Lati ṣiṣe iwe afọwọkọ ni gbogbo ọjọ ni 1:30 irọlẹ, ṣafikun titẹsi crontab atẹle:

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

Akopọ

O ṣeese o ronu ọpọlọpọ awọn iṣẹ miiran ti o fẹ tabi nilo lati ṣe adaṣe; bi o ti le rii, lilo kikọ iwe ikarahun yoo ṣe simplify igbiyanju yii. Ni ominira lati jẹ ki a mọ ti o ba rii nkan yii ti o ṣe iranlọwọ ati maṣe ṣiyemeji lati ṣafikun awọn imọran tirẹ tabi awọn asọye nipasẹ fọọmu ni isalẹ.