Använda Shell Scripting för att automatisera Linux -systemunderhållsuppgifter
För en tid sedan läste jag att en av de utmärkande egenskaperna hos en effektiv systemadministratör / ingenjör är latskap. Det verkade lite motsägelsefullt först men författaren fortsatte sedan med att förklara varför:
RHCE -serien: Automatisera Linux -systemunderhållsuppgifter - Del 4
om en sysadmin spenderar större delen av sin tid på att lösa problem och göra repetitiva uppgifter kan du misstänka att han eller hon inte gör saker rätt. Med andra ord bör en effektiv systemadministratör / ingenjör utveckla en plan för att utföra repetitiva uppgifter med så lite åtgärder från hans / hennes sida som möjligt, och bör förutse problem genom att använda,
till exempel verktygen som granskas i del 3 - Övervaka systemaktivitetsrapporter med Linux -verktygssatser av denna serie. Även om han eller hon kanske inte verkar göra så mycket, beror det på att de flesta av hans / hennes ansvar har har tagits om hand med hjälp av skalskript, vilket är vad vi ska prata om i detta handledning.
Vad är ett skalskript?
Med några ord är ett skalskript inget mer och inget mindre än ett program som körs steg för steg av ett skal, vilket är ett annat program som tillhandahåller ett gränssnittsskikt mellan Linux -kärnan och slutet användare.
Som standard används skalet för användarkonton i RHEL 7 är bash (/bin/bash). Om du vill ha en detaljerad beskrivning och lite historisk bakgrund kan du hänvisa till denna Wikipedia -artikel.
För att ta reda på mer om den enorma uppsättningen funktioner som tillhandahålls av detta skal, kanske du vill kolla in dess man sida, som laddas ner i PDF -format på (Bash -kommandon). Förutom det antas det att du är bekant med Linux -kommandon (om inte, rekommenderar jag dig starkt att gå igenom En guide från nybörjare till SysAdmin artikel i Tecmint.com innan fortsättning). Nu ska vi börja.
Skriva ett manus för att visa systeminformation
För vår bekvämlighet, låt oss skapa en katalog för att lagra våra skalskript:
# mkdir -skript. # cd -skript.
Och öppna en ny textfil med namnet system_info.sh med din föredragna textredigerare. Vi börjar med att infoga några kommentarer högst upp och några kommandon efteråt:
#!/bin/bash # Exempelskript skrivet för del 4 i RHCE -serien. # Det här skriptet returnerar följande uppsättning systeminformation: # -Hostname information: echo -e "\ e [31; 43m ***** HOSTNAME INFORMATION***** \ e [0m " hostnamectl. eko "" # -Filsystemets användning av diskutrymme: echo -e "\ e [31; 43m *****FILSYSTEM DISK RUMSANVÄNDNING***** \ e [0m " df -h. eko "" # -Gratis och använt minne i systemet: echo -e "\ e [31; 43m *****GRATIS OCH ANVÄNDT MINNE***** \ e [0m " fri. eko "" # -Systemets drifttid och belastning: echo -e "\ e [31; 43m *****SYSTEMTID OCH LAST***** \ e [0m " drifttid. eko "" # -Inloggade användare: echo -e "\ e [31; 43m *****NU LOGGADE ANVÄNDARE***** \ e [0m " vem. eko "" # -Top 5 -processer när det gäller minnesanvändning. eko -e "\ e [31; 43m *****TOPP 5 MINNESFÖRBRUKANDE PROCESSER***** \ e [0m " ps -eo%mem,%cpu, comm --sort = -%mem | huvud -n 6. eko "" echo -e "\ e [1; 32mKlar. \ e [0m"
Ge sedan skriptet körbehörigheter:
# chmod +x system_info.sh.
och kör det:
./system_info.sh.
Observera att rubrikerna för varje avsnitt visas i färg för bättre visualisering:
Server -övervakning av shell -skript
Den funktionen tillhandahålls av det här kommandot:
eko -e "\ e [COLOR1; COLOR2m\ e [0m "
Var FÄRG1 och FÄRG2 är för- respektive bakgrundsfärgerna (mer info och alternativ förklaras i denna post från Arch Linux Wiki) och är strängen som du vill visa i färg.
Automatisera uppgifter
Uppgifterna som du kan behöva automatisera kan variera från fall till fall. Således kan vi omöjligt täcka alla möjliga scenarier i en enda artikel, men vi kommer att presentera tre klassiska uppgifter som kan automatiseras med hjälp av skalskript:
1) uppdatera den lokala fildatabasen, 2) hitta (och alternativt radera) filer med 777 behörigheter och 3) varning när filsystemanvändning överstiger en definierad gräns.
Låt oss skapa en fil med namnet auto_tasks.sh i vår skriptkatalog med följande innehåll:
#!/bin/bash # Exempelskript för att automatisera uppgifter: # -Uppdatera lokal fildatabas: echo -e "\ e [4; 32mUPPDATERA LOKAL FILDATABAS\ e [0m " uppdateradb. om [$? == 0 ]; eko sedan "Den lokala fildatabasen uppdaterades korrekt." annars eko "Den lokala fildatabasen uppdaterades inte korrekt." fi. echo "" # -Find och / eller ta bort filer med 777 behörigheter. eko -e "\ e [4; 32mSÖKAR FILER MED 777 TILLÄMNEN\ e [0m " # Aktivera något av alternativen (kommentera den andra raden), men inte båda. # Alternativ 1: Radera filer utan att be om bekräftelse. Antar GNU -versionen av hitta. #find -typ f -perm 0777 -radera. # Alternativ 2: Be om bekräftelse innan du tar bort filer. Mer bärbar över system. hitta -typ f -perm 0777 -exec rm -i {} +; eko "" # -Larm när filsystemanvändning överstiger en definierad gräns eko -e "\ e [4; 32mKONTROLLERA FILSYSTEMET ANVÄNDNING\ e [0m " TRÄSKA = 30. medan du läser raden; do # Denna variabel lagrar filsystemets sökväg som en sträng FILESYSTEM = $ (echo $ line | awk '{print $ 1}') # This variabel lagrar användningsprocenten (XX %) PERCENTAGE = $ (echo $ line | awk '{print $ 5}') # Användningsprocent utan % tecken. ANVÄNDNING = $ {PERCENTAGE%?} Om [$ USGE -gt $ THRESHOLD]; eko sedan "Det återstående tillgängliga utrymmet i $ FILESYSTEM är kritiskt lågt. Använd: $ PERCENTAGE "fi. gjort <
Observera att det finns ett mellanrum mellan de två < tecken på manusets sista rad.
Shell Script för att hitta 777 behörigheter
Använda Cron
För att ta effektiviteten ett steg längre vill du inte sitta framför datorn och köra dessa skript manuellt. Snarare kommer du att använda cron för att schemalägga dessa uppgifter att köras regelbundet och skickar resultaten till en fördefinierad lista över mottagare via e -post eller sparar dem i en fil som kan visas med en webbläsare.
Följande skript (filesystem_usage.sh) kör det välkända df -h kommando, formatera utmatningen till en HTML -tabell och spara den i report.html fil:
#!/bin/bash. # Exempelskript för att demonstrera skapandet av en HTML -rapport med hjälp av skalskript. # Webbkatalog. WEB_DIR =/var/www/html. # Lite CSS och tabelllayout för att få rapporten att se lite snyggare ut. eko ""> $ WEB_DIR/report.html. # Visa värdnamn och sätt in det högst upp i html -kroppen. HOST = $ (värdnamn) echo "Filsystemanvändning för värd$ HOST
Senast uppdaterad: $ (datum)
Filsystem
Storlek
Använda sig av %
">> $ WEB_DIR/report.html. # Läs utmatningen av df -h rad för rad. medan du läser raden; do. eko "
">> $ WEB_DIR/report.html. gjort <">> $ WEB_DIR/report.html.
I vår RHEL 7 server (192.168.0.18), ser det ut så här:
Serverövervakningsrapport
Du kan lägga till den rapporten så mycket information du vill. Att köra manuset varje dag kl 13.30, lägg till följande crontab -post:
30 13 * * * /root/scripts/filesystem_usage.sh.
Sammanfattning
Du kommer troligen att tänka på flera andra uppgifter som du vill eller behöver automatisera; Som du kan se kommer det att förenkla denna insats avsevärt med hjälp av skalskript. Meddela oss gärna om du tycker att den här artikeln är till hjälp och tveka inte att lägga till dina egna idéer eller kommentarer via formuläret nedan.