Website-Suche

5 Shell-Skripte für Linux-Neulinge zum Erlernen der Shell-Programmierung – Teil II


Um etwas zu lernen, muss man es tun, ohne Angst davor zu haben, erfolglos zu sein. Ich glaube an die Praktikabilität und werde Sie daher in die praktische Welt der Skriptsprache begleiten.

Dieser Artikel ist eine Erweiterung unseres ersten Artikels „Linux Shell und grundlegende Shell-Skripte verstehen – Teil I“, in dem wir Ihnen einen Vorgeschmack auf die Skripterstellung gegeben haben und Sie in diesem Artikel nicht enttäuschen werden.

Skript 1: Ein spezielles Muster zeichnen

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

Die meisten der oben genannten Schlüsselwörter sind Ihnen bekannt und die meisten davon sind selbsterklärend. Beispielsweise legt MAX den Maximalwert der Variablen fest, da es sich um eine Schleife handelt und alles innerhalb der Schleife immer wieder ausgeführt wird, bis die Schleife für den angegebenen Eingabewert gültig ist.

Beispielausgabe
[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

Wenn Sie sich mit einer Programmiersprache ein wenig auskennen, ist das Erlernen des obigen Skripts nicht schwierig, selbst wenn Sie neu in den Bereichen Informatik, Programmierung und Linux sind, wird es nicht sehr schwierig sein.

Laden Sie Special_Pattern.sh herunter

Skript 2: Erstellen eines farbenfrohen Skripts

Wer sagt, dass Linux farblos und langweilig ist? Speichern Sie die folgenden Codes in einem beliebigen [Punkt]-Speicher, machen Sie es ausführbar und führen Sie es aus. Vergessen Sie nicht, mir zu erzählen, wie es war. Überlegen Sie, was Sie erreichen können, indem Sie es irgendwo umsetzen.

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

Hinweis: Kümmern Sie sich jetzt nicht um den Farbcode. Die für Sie wichtigen Farbcodes werden Ihnen nach und nach auf der Zunge liegen.

Warnung: Ihr Terminal verfügt möglicherweise nicht über die Funktion zum Blinken.

Beispielausgabe
[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

Laden Sie Colorfull.sh herunter

Skript 3: Eine Datei/ein Verzeichnis verschlüsseln

Dieses Skript verschlüsselt eine Datei (erinnern Sie sich? Verzeichnis/Treiber/…. Unter Linux wird alles als Datei behandelt >). Die aktuelle Einschränkung des oben genannten Skripts besteht darin, dass es die automatische Vervollständigung von Namen mit TAB nicht unterstützt. Darüber hinaus müssen Sie das Skript und die zu verschlüsselnde Datei im selben Ordner ablegen. Möglicherweise müssen Sie „pinentry-gui“ installieren, indem Sie bei Bedarf das Paket yum oder apt verwenden.

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

Erstellen Sie eine Datei mit dem Namen „Encrypt.sh“, platzieren Sie das folgende Skript, machen Sie es ausführbar und führen Sie es wie gezeigt aus.

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

Beispielausgabe

[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: Dadurch wird Ihre Datei mit einem Passschlüssel, auch bekannt als Passwort, verschlüsselt. Bei diesem Lernprozess hätten Sie nie gedacht, dass der eigentliche Lernprozess so einfach sein könnte. Was benötigen Sie also nach dem Verschlüsseln einer Datei? Offensichtlich! Entschlüsseln der Datei. Und ich möchte, dass Sie – der Lernende, der Leser – das Entschlüsselungsskript selbst schreiben. Keine Sorge, ich lasse Sie nicht allein, ich möchte nur, dass Sie etwas aus diesem Artikel gewinnen.

Hinweis: gpg -d filename.gpg > filename ist das, was Sie in Ihrem Entschlüsselungsskript implementieren müssen. Bei Erfolg können Sie Ihr Skript als Kommentar posten. Wenn nicht, können Sie mich bitten, es für Sie zu schreiben.

Laden Sie Encrypt.sh herunter

Skript 4: Serverauslastung prüfen

Die Überprüfung der Serverauslastung ist eine der wichtigsten Aufgaben eines Administrators, und ein guter Administrator ist jemand, der weiß, wie er seine täglichen Aufgaben automatisieren kann. Unten finden Sie das Skript, das viele solcher Informationen über Ihren Server bereitstellt. Überprüfen Sie es selbst.

#!/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
Beispielausgabe
[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

Hinweis: Ich habe Ihnen das Skript gegeben, das die Ausgabe im Terminal selbst liefert. Wie wäre es, wenn Sie die Ausgabe in einer Datei zum späteren Nachschlagen erhalten würden? Implementieren Sie es mit dem Umleitungsoperator.

  1. >“: Der Umleitungsoperator veranlasst die Erstellung einer Datei, und falls sie vorhanden ist, wird der Inhalt überschrieben.
  2. >>“: Wenn Sie >> verwenden, fügen Sie Informationen hinzu, anstatt sie zu ersetzen.
  3. >>“ ist im Vergleich zu „>“ sicher

Laden Sie Server-Health.sh herunter

Skript 5: Überprüfen Sie den Speicherplatz und senden Sie eine E-Mail-Benachrichtigung

Wie wäre es, wenn Sie eine E-Mail erhalten, wenn die Festplattennutzung in der Partition PART größer ist als der maximal zulässige Wert? Es handelt sich um ein lebensrettendes Skript für Webadministratoren mit nur wenigen Änderungen.

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

Hinweis: Entfernen Sie „USER“ mit Ihrem Benutzernamen. Sie können E-Mails mit dem Befehl „mail“ abrufen.

Laden Sie Check-Disk-Space.sh herunter

Beim Schreiben und Programmieren von Skripten sind keine Grenzen gesetzt, alles und jedes kann nach Bedarf umgesetzt werden. Das ist vorerst alles. In meinem nächsten Artikel werde ich Ihnen einige verschiedene Arten der Skripterstellung vorstellen. Bis dahin bleibt cool und dran, viel Spaß.