Zoeken op website

5 Shell-scripts voor Linux-nieuwkomers om Shell-programmering te leren - Deel II


Om iets te leren moet je het doen, zonder de angst dat het niet zal lukken. Ik geloof in de praktijk en zal je daarom vergezellen in de praktische wereld van Scripting Language.

Dit artikel is een uitbreiding van ons eerste artikel Begrijp Linux Shell en Basic Shell Scripting – Deel I, waarin we je een voorproefje gaven van Scripting, en we gaan verder met het feit dat we je in dit artikel niet zullen teleurstellen.

Script 1: Een speciaal patroon tekenen

#!/bin/bash
MAX_NO=0
echo -n "Enter Number between (5 to 9) : "
read MAX_NO
if ! [ $MAX_NO -ge 5 -a $MAX_NO -le 9 ] ; then
   echo "WTF... I ask to enter number between 5 and 9, Try Again"
   exit 1
fi
clear
for (( i=1; i<=MAX_NO; i++ )) do     for (( s=MAX_NO; s>=i; s-- ))
    do
       echo -n " "
    done
    for (( j=1; j<=i;  j++ ))     do      echo -n " ."      done     echo "" done ###### Second stage ###################### for (( i=MAX_NO; i>=1; i-- ))
do
    for (( s=i; s<=MAX_NO; s++ ))
    do
       echo -n " "
    done
    for (( j=1; j<=i;  j++ ))
    do
     echo -n " ."
    done
    echo ""
done
echo -e "\n\n\t\t\t Whenever you need help, linux-console.net is always there"

De meeste van de bovenstaande ‘sleutelwoorden‘ zullen u bekend voorkomen en de meeste spreken voor zich. MAX stelt bijvoorbeeld de maximale waarde van de variabele in, want het is een lus en alles binnen de lus wordt keer op keer uitgevoerd totdat de lus geldig is voor een gegeven invoerwaarde.

Voorbeelduitvoer
[root@tecmint ~]# chmod 755 Special_Pattern.sh
[root@tecmint ~]# ./Special_Pattern.sh
Enter Number between (5 to 9) : 6
       .
      . .
     . . .
    . . . .
   . . . . .
  . . . . . .
  . . . . . .
   . . . . .
    . . . .
     . . .
      . .
       .

                         Whenever you need help, linux-console.net is always there

Als je een beetje op de hoogte bent van welke programmeertaal dan ook, is het leren van het bovenstaande script niet moeilijk, zelfs als je nieuw bent op het gebied van rekenen, programmeren en Linux, zal het niet veel moeilijk zijn.

Download Special_Pattern.sh

Script 2: Kleurrijk script maken

Wie zegt: Linux is kleurloos en saai, sla de onderstaande codes op in iets [dot] sh, maak het uitvoerbaar en voer het uit, niet doen Vergeet niet mij te vertellen hoe het was. Denk na over wat je kunt bereiken, door het ergens te implementeren.

#!/bin/bash
clear 
echo -e "33[1m Hello World"
bold effect
echo -e "33[5m Blink"
blink effect
echo -e "33[0m Hello World"
back to normal
echo -e "33[31m Hello World"
Red color
echo -e "33[32m Hello World"
Green color
echo -e "33[33m Hello World"
See remaining on screen
echo -e "33[34m Hello World"
echo -e "33[35m Hello World"
echo -e "33[36m Hello World"
echo -e -n "33[0m"
back to normal
echo -e "33[41m Hello World"
echo -e "33[42m Hello World"
echo -e "33[43m Hello World"
echo -e "33[44m Hello World"
echo -e "33[45m Hello World"
echo -e "33[46m Hello World"
echo -e "33[0m Hello World"

Opmerking: maak je nu geen zorgen over de kleurcode. De dingen die belangrijk voor je zijn, zullen geleidelijk aan op je tong verschijnen.

Waarschuwing: uw terminal beschikt mogelijk niet over de mogelijkheid om te knipperen.

Voorbeelduitvoer
[root@tecmint ~]# chmod 755 Colorfull.sh
[root@tecmint ~]# ./Colorfull.sh

Hello World
Blink
Hello World
Hello World
Hello World
Hello World
Hello World
Hello World
Hello World
Hello World
Hello World
Hello World
Hello World
Hello World
Hello World
Hello World

Kleurrijkel.sh downloaden

Script 3: Codeer een bestand/map

Dit script codeert een bestand (onthoud? map/stuurprogramma/…. alles wordt behandeld als bestand, in Linux >). De huidige beperking van het bovenstaande script is dat het geen automatische aanvulling van de naam ondersteunt met behulp van TAB. Bovendien moet u het script en het bestand dat moet worden gecodeerd in dezelfde map plaatsen. Mogelijk moet u “pinentry-gui” installeren met behulp van yum of het pakket apt, indien nodig.

[root@midstage ~]# yum install pinentry-gui
[root@midstage ~]# apt-get install pinentry-gui

Maak een bestand met de naam “Encrypt.sh” en plaats het volgende script, maak het uitvoerbaar en voer het uit zoals weergegeven.

#!/bin/bash
echo "Welcome, I am ready to encrypt a file/folder for you"
echo "currently I have a limitation, Place me to thh same folder, where a file to be 
encrypted is present"
echo "Enter the Exact File Name with extension"
read file;
gpg -c $file
echo "I have encrypted the file successfully..."
echo "Now I will be removing the original file"
rm -rf $file

Voorbeelduitvoer

[root@tecmint ~]# chmod 755 Encrypt.sh
[root@tecmint ~]# ./Encrypt.sh

Welcome, I am ready to encrypt a file/folder for you
currently I have a limitation, Place me to the same folder, where a file to be

encrypted is present
Enter the Exact File Name with extension

package.xml

                                                   ┌─────────────────────────────────────────────────────┐
                                                   │ Enter passphrase                                    │
                                                   │                                                     │
                                                   │                                                     │
                                                   │ Passphrase *******_________________________________ │
                                                   │                                                     │
                                                   │       <OK>                             <Cancel>     │
                                                   └─────────────────────────────────────────────────────┘

Please re-enter this passphrase

                                                   ┌─────────────────────────────────────────────────────┐
                                                   │ Please re-enter this passphrase                     │
                                                   │                                                     │
                                                   │ Passphrase ********________________________________ │
                                                   │                                                     │
                                                   │       <OK>                             <Cancel>     │
                                                   └─────────────────────────────────────────────────────┘

I have encrypted the file successfully...
Now I will be removing the original file
</pre>

gpg -c: Hiermee wordt uw bestand gecodeerd met behulp van een wachtwoord, ook wel wachtwoord genoemd. Bij dit leerproces had je nooit gedacht dat het daadwerkelijke leerproces zo eenvoudig zou kunnen zijn. Dus wat heb je nodig na het coderen van een bestand? Blijkbaar! het decoderen van het bestand. En ik wil dat jij – de leerling, de lezer – zelf het decoderingsscript schrijft. Maak je geen zorgen, ik laat je niet in het midden, ik wil gewoon dat je iets uit dit artikel haalt.

Opmerking: gpg -d bestandsnaam.gpg > bestandsnaam is wat u moet implementeren in uw decoderingsscript. Als dit lukt, kunt u uw script in een reactie plaatsen. Zo niet, dan kunt u mij vragen het voor u te schrijven.

Download Encrypt.sh

Script 4: Servergebruik controleren

Het controleren van het servergebruik is een van de belangrijkste taken van een beheerder, en een goede beheerder is iemand die weet hoe hij zijn dagelijkse taken kan automatiseren. Hieronder staat het script dat veel van dergelijke informatie over uw server zal geven. Controleer het zelf.

#!/bin/bash
    date;
    echo "uptime:"
    uptime
    echo "Currently connected:"
    w
    echo "--------------------"
    echo "Last logins:"
    last -a |head -3
    echo "--------------------"
    echo "Disk and memory usage:"
    df -h | xargs | awk '{print "Free/total disk: " $11 " / " $9}'
    free -m | xargs | awk '{print "Free/total memory: " $17 " / " $8 " MB"}'
    echo "--------------------"
    start_log=`head -1 /var/log/messages |cut -c 1-12`
    oom=`grep -ci kill /var/log/messages`
    echo -n "OOM errors since $start_log :" $oom
    echo ""
    echo "--------------------"
    echo "Utilization and most expensive processes:"
    top -b |head -3
    echo
	top -b |head -10 |tail -4
    echo "--------------------"
    echo "Open TCP ports:"
    nmap -p- -T4 127.0.0.1
    echo "--------------------"
    echo "Current connections:"
    ss -s
    echo "--------------------"
    echo "processes:"
    ps auxf --width=200
    echo "--------------------"
    echo "vmstat:"
    vmstat 1 5
Voorbeelduitvoer
[root@tecmint ~]# chmod 755 Server-Health.sh
[root@tecmint ~]# ./Server-Health.sh

Tue Jul 16 22:01:06 IST 2013
uptime:
 22:01:06 up 174 days,  4:42,  1 user,  load average: 0.36, 0.25, 0.18
Currently connected:
 22:01:06 up 174 days,  4:42,  1 user,  load average: 0.36, 0.25, 0.18
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
tecmint   pts/0    116.72.134.162   21:48    0.00s  0.03s  0.03s sshd: tecmint [priv]
--------------------
Last logins:
tecmint   pts/0        Tue Jul 16 21:48   still logged in    116.72.134.162
tecmint   pts/0        Tue Jul 16 21:24 - 21:43  (00:19)     116.72.134.162
--------------------
Disk and memory usage:
Free/total disk: 292G / 457G
Free/total memory: 3510 / 3838 MB
--------------------
OOM errors since Jul 14 03:37 : 0
--------------------
Utilization and most expensive processes:
top - 22:01:07 up 174 days,  4:42,  1 user,  load average: 0.36, 0.25, 0.18
Tasks: 149 total,   1 running, 148 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.1%us,  0.0%sy,  0.0%ni, 99.3%id,  0.6%wa,  0.0%hi,  0.0%si,  0.0%st

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
    1 root      20   0  3788 1128  932 S  0.0  0.0   0:32.94 init
    2 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kthreadd
    3 root      RT   0     0    0    0 S  0.0  0.0   0:14.07 migration/0

Opmerking: ik heb je het script gegeven dat de uitvoer in de terminal zelf geeft. Wat dacht je ervan om de uitvoer in een bestand te krijgen voor toekomstig gebruik. Implementeer het met behulp van de redirect-operator.

  1. >‘: de omleidingsoperator zorgt ervoor dat er een bestand wordt gemaakt en als dit bestaat, wordt de inhoud overschreven.
  2. >>‘: wanneer u >> gebruikt, voegt u informatie toe in plaats van deze te vervangen.
  3. >>’ is veilig, vergeleken met ‘>

Download Server-Health.sh

Script 5: Controleer schijfruimte en verzendt een e-mailwaarschuwing

Hoe zit het met het ontvangen van een e-mail wanneer het schijfgebruik in partitie PART groter is dan het Maximaal toegestane, het is een levensreddend script voor webbeheerders met weinig aanpassingen.

MAX=95
[email 
PART=sda1
USE=`df -h |grep $PART | awk '{ print $5 }' | cut -d'%' -f1`
if [ $USE -gt $MAX ]; then
  echo "Percent used: $USE" | mail -s "Running out of disk space" $EMAIL
fi

Opmerking: Verwijder “USER” met uw gebruikersnaam. U kunt uw e-mail controleren met behulp van de opdracht ‘mail’.

Download Check-Disk-Space.sh

Scripts schrijven en programmeren gaat over grenzen heen, alles kan naar wens worden geïmplementeerd. Dat is alles voor nu. In mijn volgende artikel zal ik je een aantal verschillende smaken van scripting geven. Blijf tot die tijd koel en afgestemd, geniet ervan.