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ų.
- „>“ : peradresavimo operatorius sukuria failą, o jei toks yra, turinys perrašomas.
- „>>“ : kai naudojate >>, pridedate informaciją, o ne ją pakeičiate.
- „>>“ 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.