5 Shell-skript for Linux-nybegynnere for å lære Shell-programmering - Del II


For å lære noe må du gjøre det, uten frykt for å mislykkes. Jeg tror på praktisk og vil følge deg til den praktiske verden av skriptspråk.

Denne artikkelen er en utvidelse av vår første artikkel Forstå Linux Shell og Basic Shell Scripting – Del I, hvor vi ga deg en smakebit på skripting, og fortsetter at vi ikke vil skuffe deg i denne artikkelen.

Skript 1: Tegn et spesielt mønster

#!/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 fleste av de ovennevnte «nøkkelordene» vil være kjent for deg, og de fleste av dem er selvforklarende. for eksempel, MAX setter den maksimale verdien av variabelen, for er en løkke og alt i løkken fortsetter å utføres igjen og igjen til løkken er gyldig for gitt verdi av input.

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

Hvis du er litt klar over et hvilket som helst programmeringsspråk, er det ikke vanskelig å lære skriptet ovenfor, selv om du er ny på databehandling, programmering og Linux, kommer det ikke til å være mye vanskelig.

Last ned Special_Pattern.sh

Skript 2: Lag fargerikt manus

Hvem sier, Linux er fargeløst og kjedelig, lagre kodene nedenfor til hva som helst [dot] sh, gjør det kjørbart og kjør det, ikke Ikke glem å fortelle meg hvordan det var, Tenk hva du kan oppnå, implementer det et sted.

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

Merk: Ikke bry deg om fargekoden nå, de som er viktige for deg vil være ved tungen din, gradvis.

Advarsel: Terminalen din har kanskje ikke muligheten til å blinke.

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

Last ned Colorfull.sh

Skript 3: Krypter en fil/katalog

Dette skriptet vil kryptere en fil (husker du? katalog/driver/... alt behandles som en fil i Linux >). Den nåværende begrensningen for skriptet ovenfor er at det ikke støtter automatisk fullføring av navn ved å bruke TAB. Dessuten må du plassere skriptet og filen som skal krypteres i samme mappe. Du må kanskje installere "pinentry-gui ", ved å bruke yum eller apt pakken, hvis nødvendig.

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

Lag en fil kalt «Encrypt.sh» og plasser følgende skript, gjør det kjørbart og kjør det som vist.

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

Eksempelutgang

[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 : Dette vil kryptere filen din ved å bruke en passordnøkkel aka passord. I denne læringsprosessen ville du aldri trodd at selve læringsprosessen kunne være så lett. Så etter å ha kryptert en fil, hva trenger du? Åpenbart! dekryptere filen. Og jeg vil at du – eleven, leseren skal skrive dekrypteringsskriptet selv, ikke bekymre deg, jeg forlater deg ikke i midten, jeg vil bare at du skal få noe ut av denne artikkelen.

Merk: gpg -d filnavn.gpg > filnavn er det du trenger for å implementere i dekrypteringsskriptet ditt. Du kan legge inn manuset ditt i kommentarfeltet hvis det lykkes, hvis ikke kan du be meg om å skrive det for deg.

Last ned Encrypt.sh

Skript 4: Sjekker serverutnyttelse

Å sjekke serverbruken er en av de viktige oppgavene til en administrator, og en god administrator er en som vet hvordan han skal automatisere den daglige oppgaven. Nedenfor er skriptet som vil gi mye slik informasjon om serveren din. Sjekk det selv.

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

Merk: Jeg har gitt deg skriptet som gir utdata i selve terminalen, hva med å få utdata i en fil for fremtidig referanse. Implementer det ved å bruke omdirigeringsoperatør.

  1. '>' : omdirigeringsoperatøren forårsaker en filoppretting, og hvis den eksisterer, blir innholdet overskrevet.
  2. '>>': når du bruker >>, legger du til informasjon i stedet for å erstatte den.
  3. «>>» er trygt sammenlignet med «>»

Last ned Server-Health.sh

Skript 5: Sjekk diskplass og sender et e-postvarsel

Hva med å få en e-post når diskbruk i partisjonen DEL er større enn maksimalt tillatt, det er et livredderskript for nettadministratorer med liten modifikasjon.

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

Merk: Fjern «BRUKER» med brukernavnet ditt. Du kan sjekke e-post ved å bruke «mail»-kommandoen.

Last ned Check-Disk-Space.sh

Skriptskriving og programmering er utenfor grenser, alt og alt kan implementeres etter behov. Det var alt for nå, i min neste artikkel vil jeg gi deg noen forskjellige varianter av skripting. Inntil da hold deg kjølig og innstilt, nyt.