5 Shell forskriftir fyrir Linux nýliða til að læra Shell forritun - Part II


Til að læra eitthvað þarftu að gera það, án þess að óttast að vera árangurslaus. Ég trúi á hagkvæmni og mun þess vegna fylgja þér í hagnýtan heim skriftarmálsins.

Þessi grein er framlenging á fyrstu grein okkar Skildu Linux Shell og Basic Shell Scripting - Part I, þar sem við gáfum þér smakk af Scripting, áfram að við munum ekki valda þér vonbrigðum í þessari grein.

Handrit 1: Að teikna sérstakt mynstur

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

Flest ofangreindra „lykilorða“ væru þekkt fyrir þig og flest þeirra skýra sig sjálf. td, MAX setur hámarksgildi breytunnar, því er lykkja og allt innan lykkjunnar heldur áfram að keyra aftur og aftur þar til lykkjan er gild fyrir gefið gildi inntaks.

 chmod 755 Special_Pattern.sh
 ./Special_Pattern.sh
Enter Number between (5 to 9) : 6
       .
      . .
     . . .
    . . . .
   . . . . .
  . . . . . .
  . . . . . .
   . . . . .
    . . . .
     . . .
      . .
       .

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

Ef þú ert svolítið meðvitaður um hvaða forritunarmál sem er, þá er ekki erfitt að læra ofangreind handrit, jafnvel þó þú sért nýr í útreikningum, forritun og Linux þá verður það ekki mikið erfitt.

Handrit 2: Að búa til litríkt handrit

Hver segir, Linux er litlaus og leiðinlegt, vistaðu kóðana hér að neðan í hvað sem er [punktur] sh, gerðu það keyranlegt og keyrðu það, ekki gleyma að segja mér hvernig það var, hugsaðu hvað þú getur náð, útfærðu það einhvers staðar.

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

Athugið: Ekki nenna litakóðanum núna, þeir sem eru mikilvægir fyrir þig verða smám saman við tunguna þína.

Viðvörun: Mögulegt er að flugstöðin þín hafi ekki möguleika á að blikka.

 chmod 755 Colorfull.sh
 ./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

Forskrift 3: Dulkóða skrá/skrá

Þetta handrit mun dulkóða skrá (munið þið eftir? möppu/bílstjóri/... allt er meðhöndlað sem skrá, í Linux). Núverandi takmörkun á ofangreindu handriti er að það styður ekki sjálfvirka útfyllingu nafns með TAB. Þar að auki þarftu að setja handritið og skrána sem á að dulkóða í sömu möppu. Þú gætir þurft að setja upp \pinentry-gui, með því að nota yum eða apt pakkann, ef þess er krafist.

 yum install pinentry-gui
 apt-get install pinentry-gui

Búðu til skrá sem heitir Encrypt.sh og settu eftirfarandi skriftu, gerðu það keyranlegt og keyrðu það eins og sýnt er.

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

Sýnishorn úttak

 chmod 755 Encrypt.sh
 ./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 : Þetta mun dulkóða skrána þína með því að nota aðgangslykil aka lykilorð. Í þessu námsferli hefði þér aldrei dottið í hug að raunverulegt nám gæti verið svona auðvelt. Svo eftir að hafa dulkóðað skrá hvað þarftu? Augljóslega! afkóða skrána. Og ég vil að þú - nemandinn, lesandinn skrifi afkóðunarforritið sjálfur, ekki hafa áhyggjur, ég skil þig ekki eftir í miðjunni, ég vil bara að þú fáir eitthvað út úr þessari grein.

Athugið: gpg -d filename.gpg > skráarnafn er það sem þú þarft að útfæra í afkóðun skriftu. Þú mátt setja handritið þitt í athugasemd ef það tekst, ef ekki geturðu beðið mig um að skrifa það fyrir þig.

Forskrift 4: Athugaðu netþjónanotkun

Að athuga nýtingu netþjónsins er eitt mikilvægasta verkefni stjórnanda og góður stjórnandi er sá sem veit hvernig á að gera daglegt verkefni sitt sjálfvirkt. Hér að neðan er handritið sem mun gefa margar slíkar upplýsingar um netþjóninn þinn. Athugaðu það sjálfur.

#!/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
 chmod 755 Server-Health.sh
 ./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              [email    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

Athugið: Ég hef gefið þér handritið sem gefur úttakið í flugstöðinni sjálfu, hvernig væri að fá úttakið í skrá til framtíðarviðmiðunar. Innleiða það með því að nota tilvísunaraðila.

  1. ‘>‘ : Tilvísunarstjórnandinn veldur skráargerð og ef hún er til er innihaldinu skrifað yfir.
  2. ‘>>‘ : þegar þú notar >> ertu að bæta við upplýsingum í stað þess að skipta þeim út.
  3. ‘>>‘ er öruggt samanborið við ‘>‘

Forskrift 5: Athugaðu diskpláss og sendir tölvupóstviðvörun

Hvernig væri að fá tölvupóst þegar diskanotkun í skiptingunni PART er stærri en hámarks leyfilegt, það er björgunarforskrift fyrir vefstjórnendur með litlum breytingum.

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

Athugið: Fjarlægðu „USER“ með notendanafninu þínu. Þú getur athugað póst með því að nota „mail“ skipunina.

Handritaskrif og forritun er út fyrir landamæri, allt og allt var hægt að útfæra eftir þörfum. Það er allt í bili, í næstu grein minni mun ég gefa þér mismunandi bragðtegundir af handriti. Þangað til vertu kaldur og stilltur, njóttu.