5 apvalkalo scenarijai, skirti Linux naujokams mokytis apvalkalo programavimo – II dalis


Norėdami kažko išmokti, turite tai padaryti, nebijodami būti nesėkmingi. Tikiu praktiškumu, todėl lydėsiu jus į praktinį scenarijų kalbos pasaulį.

Šis straipsnis yra mūsų pirmojo straipsnio „Supraskite Linux apvalkalą ir pagrindinį apvalkalo scenarijų – I dalį“, kuriame mes jums suteikėme scenarijaus paragauti, tęsinys, tęsdami, kad šiame straipsnyje jūsų nenuvilsime.

1 scenarijus: specialaus modelio piešimas

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

Dauguma pirmiau minėtų „raktinių žodžių“ jums žinomi ir dauguma jų yra savaime suprantami. pvz., MAX nustato didžiausią kintamojo reikšmę, nes yra ciklas ir viskas ciklo viduje vėl ir vėl vykdoma, kol ciklas galioja nurodytai įvesties vertei.

Pavyzdžio išvestis
[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

Jei šiek tiek išmanote bet kurią programavimo kalbą, išmokti aukščiau pateiktą scenarijų nėra sunku, net jei esate naujokas skaičiavimo, programavimo ir Linux srityse, tai nebus labai sunku.

Atsisiųskite Special_Pattern.sh

2 scenarijus: spalvingo scenarijaus kūrimas

Kas sako: Linux yra bespalvis ir nuobodus, išsaugokite toliau pateiktus kodus į bet ką [tašką] sh, padarykite jį vykdomąjį ir paleiskite, Nepamirškite man pasakyti, kaip buvo, pagalvokite, ką galite pasiekti, kur nors tai įgyvendindami.

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

Pastaba: dabar nesijaudinkite dėl spalvų kodo, nes tai, kas jums svarbu, pamažu bus prie jūsų liežuvio.

Įspėjimas: jūsų terminalas gali neturėti galimybės mirksėti.

Pavyzdžio išvestis
[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

Atsisiųskite Colorfull.sh

3 scenarijus: užšifruokite failą/katalogą

Šis scenarijus užšifruos failą (pamenate? katalogas/tvarkyklė/…. Linux sistemoje viskas traktuojama kaip failas >). Dabartinis anksčiau pateikto scenarijaus apribojimas yra tas, kad jis nepalaiko automatinio pavadinimo užbaigimo naudojant TAB. Be to, scenarijų ir failą, kurį norite užšifruoti, turite įdėti į tą patį aplanką. Jei reikia, gali tekti įdiegti pinentry-gui, naudojant yum arba apt paketą.

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

Sukurkite failą pavadinimu Encrypt.sh ir įdėkite toliau pateiktą scenarijų, padarykite jį vykdomąjį ir paleiskite, kaip parodyta.

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

Pavyzdžio išvestis

[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 : tai užšifruos jūsų failą naudojant slaptažodžio raktą, dar žinomą kaip slaptažodis. Šiame mokymosi procese niekada nepagalvojote, kad tikrasis mokymosi procesas gali būti toks lengvas. Taigi, ko jums reikia užšifravus failą? Aišku! failo iššifravimas. Ir aš noriu, kad jūs – besimokantysis, skaitytojas, kad pats parašytumėte iššifravimo scenarijų, nesijaudinkite, aš nepalieku jūsų viduryje, tik noriu, kad jūs ką nors iš šio straipsnio gautumėte.

Pastaba: gpg -d failo pavadinimas.gpg > failo pavadinimas yra tai, ką turite įdiegti iššifravimo scenarijuje. Jei pavyks, galite paskelbti savo scenarijų komentare, jei ne, galite paprašyti manęs parašyti jį už jus.

Atsisiųskite Encrypt.sh

4 scenarijus: serverio naudojimo tikrinimas

Serverio naudojimo tikrinimas yra viena iš svarbių administratoriaus užduočių, o geras administratorius yra tas, kuris žino, kaip automatizuoti savo kasdienes užduotis. Žemiau yra scenarijus, kuris suteiks daug tokios informacijos apie jūsų serverį. Patikrinkite patys.

#!/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
Pavyzdžio išvestis
[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

Pastaba: pateikiau scenarijų, kuris pateikia išvestį pačiame terminale, o kaip gauti išvestį į failą, kad galėtumėte pasinaudoti ateityje. Įdiekite jį naudodami peradresavimo operatorių.

  1. >“ : peradresavimo operatorius sukuria failą, o jei toks yra, turinys perrašomas.
  2. >>“ : kai naudojate >>, pridedate informaciją, o ne ją pakeičiate.
  3. >>“ yra saugus, palyginti su „>

Atsisiųskite Server-Health.sh

5 scenarijus: patikrinkite vietą diske ir siunčia įspėjimą el

Kaip gauti el. laišką, kai disko naudojimas skaidinyje PART yra didesnis nei leidžiamas maksimalus, tai yra gelbėjimo scenarijus žiniatinklio administratoriams su mažais pakeitimais.

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

Pastaba: pašalinkite „USER“ su savo vartotojo vardu. Galite patikrinti paštą naudodami komandą paštas.

Atsisiųskite Check-Disk-Space.sh

Scenarijaus rašymas ir programavimas yra už ribų, viskas ir viskas gali būti įgyvendinta pagal poreikį. Kol kas tai viskas. Kitame savo straipsnyje pateiksiu jums keletą skirtingų scenarijų. Iki tol būkite ramūs ir mėgaukitės.