“Shell” programmirlemesini öwrenmek üçin Linux täze doglanlar üçin 5 gabyk skripti - II bölüm


Bir zady öwrenmek üçin şowsuz bolmakdan gorkman etmeli. Amalydygyna ynanýaryn we şonuň üçin size ripazuw diliniň amaly dünýäsine ýoldaş boljakdygyna ynanýaryn.

Bu makala, Linux Shell we Basic Shell Scripting - I bölüme düşüniň ilkinji makalamyzyň dowamy, bu makalada sizi göwnüňizden turmajakdygymyzy dowam etdirip, Scriptazuwyň tagamyny hödürledik.

Scriptazgy 1: Patörite nagyş çyzmak

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

Aboveokardaky esasy sözleriň köpüsi size mälim bolar we köpüsi öz-özünden düşündirýär. meselem, MAX üýtgeýjiniň iň ýokary bahasyny kesgitleýär, sebäbi aýlawdyr we aýlawyň içindäki islendik zat, girişiň berlen gymmaty üçin hereket edýänçä gaýtalanyp ýerine ýetirilýär.

 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

Islendik programmirleme dilinden azajyk habarly bolsaňyz, ýokardaky skripti öwrenmek kyn däl, hasaplamak, programmirlemek we Linux üçin täze bolsaňyzam, gaty kyn bolmaz.

Scriptazgy 2: Reňkli skript döretmek

Kim aýdýar, Linux reňksiz we içgysgynç, aşakdaky kodlary islendik nokada ýazdyryň, ýerine ýetirip bilersiňiz we işlediň, maňa nähili bolandygyny aýtmagy ýatdan çykarmaň, nämä ýetip boljakdygyňyzy pikir ediň, bir ýerde durmuşa geçiriň.

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

Bellik: Indi reňk kody bilen gyzyklanmaň, Siziň üçin möhümler kem-kemden diliňizde bolar.

Duýduryş: Terminalyňyzda ýalpyldawuk enjam ýok bolmagy mümkin.

 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

Scriptazgy 3: Faýl/katalogy şifrlemek

Bu skript bir faýly şifrlär (ýadyňyzdamy? Directory/driver /…. Hemme zat faýl hökmünde seredilýär, Linux-da). Aboveokardaky skriptiň häzirki çäklendirmesi, TAB ulanyp, adyň awtomatiki tamamlanmagyny goldamaýar. Mundan başga-da, skript we faýly şifrlemek üçin şol bir bukjada ýerleşdirmeli. Zerur bolsa, ýum ulanyp ýa-da bukjany ulanyp,\pinentry-gui gurmaly bolmagyňyz mümkin.

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

“Encrypt.sh” atly bir faýl dörediň we aşakdaky skripti ýerleşdiriň, ýerine ýetirip bilersiňiz we görkezilişi ýaly işlediň.

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

Çykyşyň nusgasy

 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: Bu, açar paroly ulanyp, faýlyňyzy şifrleýär. Öwrenmegiň bu prosesinde hakyky okuw prosesiniň beýle aňsat bolup biljekdigini hiç wagt pikir etmersiňiz. Şonuň üçin bir faýly şifrlemekden soň size näme gerek? Elbetde! faýly açmak. We siziň - okuwçynyň, okyjynyň açar ýazgysyny özüňiz ýazmagyňyzy isleýärin, sizi ortada goýmaýaryn diýip gorkmaň, diňe şu makaladan bir zat gazanmagyňyzy isleýärin.

Bellik: gpg -d filename.gpg> faýlyň ady şifrlemek skriptiňizde ýerine ýetirilmeli zat. Üstünlikli bolsa, skript ýazyp bilersiňiz, bolmasa, sizden ýazmagyňyzy haýyş edip bilersiňiz.

4-nji skript: Serweriň ulanylyşyny barlamak

Serweriň ulanylyşyny barlamak administratoryň möhüm meselelerinden biri, gowy administrator bolsa gündelik işini nädip awtomatlaşdyrmalydygyny bilýän adamdyr. Aşakda serweriňiz hakda şeýle köp maglumatlary berjek skript bar. Özüňiz barlaň.

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

Bellik: Terminalyň özünde çykyş berýän skript berdim, çykyşy geljekde salgylanmak üçin bir faýlda nädip almaly. Gaýtadan gönükdirme operatory ulanyp ýerine ýetiriň.

  1. '>': gönükdirme operatory faýl döredilmegine sebäp bolýar, eger bar bolsa, mazmuny gaýtadan ýazylýar.
  2. '>>': ulananyňyzda >>, ony çalyşmagyň ýerine maglumat goşýarsyňyz.
  3. '>>', >
  4. bilen deňeşdirilende howpsuz

Scriptazgy 5: Disk giňişligini barlaň we e-poçta duýduryşyny iberýär

Bölümde disk ulanylanda Maksimum rugsat berleninden has uly bolsa, e-poçta almak nädip bolar, az üýtgedilen web dolandyryjylary üçin ömri tygşytlaýjy skriptdir.

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

Bellik: Ulanyjy adyňyz bilen USER -i aýyryň. Poçta poçta buýrugyny ulanyp barlap bilersiňiz.

Scriptazuw ýazmak we programmirlemek çäklerden çykýar, islendik zat we hemme zat talap edilişi ýaly amala aşyrylyp bilner. Munuň hemmesi häzirlikçe, Indiki makalamda size skriptiň dürli tagamlaryny hödürlärin. Şoňa çenli salkyn we sazly boluň, lezzet alyň.