5 Shell Scripts për të rinjtë Linux për të mësuar programimin e Shell - Pjesa II
Për të mësuar diçka, ju duhet ta bëni atë, pa frikën se do të jeni të pasuksesshëm. Unë besoj në prakticitetin dhe kështu do t'ju shoqërojë në botën praktike të Gjuhës së Skriptimit.
Ky artikull është një zgjerim i artikullit tonë të parë Kuptoni Linux Shell dhe skriptimin bazë të Shell - Pjesa I, ku ju dhamë një shije të Skriptimit, duke vazhduar që nuk do t'ju zhgënjejmë në këtë artikull.
Skenari 1: Vizatimi i një modeli të veçantë
#!/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"
Shumica e fjalëve kyçe të mësipërme do të njiheshin për ju dhe shumica e tyre janë vetë-shpjeguese. p.sh., MAX vendos vlerën maksimale të ndryshores, sepse është një lak dhe çdo gjë brenda ciklit fillon të ekzekutohet vazhdimisht derisa cikli të jetë i vlefshëm për vlerën e dhënë të hyrjes.
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
Nëse jeni pak i vetëdijshëm për ndonjë gjuhë programimi, mësimi i skriptit të mësipërm nuk është i vështirë, edhe nëse jeni i ri në llogaritje, programim dhe Linux nuk do të jetë shumë i vështirë.
Skript 2: Krijimi i skriptit shumëngjyrësh
Kush thotë, Linux është i pangjyrë dhe i mërzitshëm, ruani kodet më poshtë në çdo gjë [dot] sh, bëjeni të ekzekutueshëm dhe ekzekutoni, mos harroni të më tregoni se si ishte, Mendoni se çfarë mund të arrini, duke e zbatuar diku.
#!/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"
Shënim: Mos u shqetësoni për kodin e ngjyrave tani, ato që janë të rëndësishme për ju do të jenë në gjuhën tuaj, gradualisht.
Paralajmërim: Terminali juaj mund të mos ketë mundësinë e pulsit.
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
Skript 3: Enkriptoni një skedar/direktor
Ky skript do të enkriptojë një skedar (të mbani mend? drejtori/driver/…. çdo gjë trajtohet si skedar, në Linux). Kufizimi aktual i skriptit të mësipërm është se ai nuk mbështet plotësimin automatik të emrit duke përdorur TAB. Për më tepër, duhet të vendosni skriptin dhe skedarin që do të enkriptohen në të njëjtën dosje. Mund t'ju duhet të instaloni \pinentry-gui, duke përdorur yum ose apt paketën, nëse kërkohet.
yum install pinentry-gui
apt-get install pinentry-gui
Krijoni një skedar të quajtur Encrypt.sh dhe vendosni skriptin e mëposhtëm, bëjeni atë të ekzekutueshëm dhe ekzekutoni siç tregohet.
#!/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
Prodhimi i mostrës
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 : Kjo do të enkriptojë skedarin tuaj, duke përdorur një fjalëkalim të njohur si fjalëkalim. Në këtë proces të të mësuarit nuk do ta kishit menduar kurrë se procesi aktual i të mësuarit mund të ishte kaq i lehtë. Pra, pas enkriptimit të një skedari çfarë ju nevojitet? Natyrisht! deshifrimi i skedarit. Dhe unë dua që ju - nxënësi, lexuesi të shkruani vetë skenarin e deshifrimit, mos u shqetësoni se nuk po ju lë në mes, thjesht dua që ju të fitoni diçka nga ky artikull.
Shënim: gpg -d filename.gpg > emri i skedarit është ajo që duhet të zbatoni në skriptin tuaj të deshifrimit. Ju mund ta postoni skenarin tuaj në koment nëse është i suksesshëm, nëse jo, mund të më kërkoni që ta shkruaj për ju.
Skript 4: Kontrollimi i përdorimit të serverit
Kontrollimi i përdorimit të serverit është një nga detyrat e rëndësishme të një administratori, dhe një administrator i mirë është ai që di të automatizojë detyrën e tij të përditshme. Më poshtë është skripti që do të japë shumë informacione të tilla për serverin tuaj. Kontrollojeni vetë.
#!/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
Shënim: Unë ju kam dhënë skriptin që jep daljen në vetë terminalin, si të merrni daljen në një skedar për referencë në të ardhmen. Zbatoni atë duke përdorur operatorin e ridrejtimit.
- ‘>‘ : operatori i ridrejtimit shkakton krijimin e një skedari dhe nëse ekziston, përmbajtja mbishkruhet.
- ‘>>‘ : kur përdorni >>, po shtoni informacion, në vend që ta zëvendësoni.
- ‘>>’ është i sigurt, në krahasim me ‘>’
Skript 5: Kontrolloni hapësirën në disk dhe dërgoni një alarm me email
Po të merrni një email kur përdorimi i diskut në ndarjen PART është më i madh se maksimumi i lejuar, ai është një skrip shpëtimi i jetës për administratorët e uebit me pak modifikime.
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
Shënim: Hiqni USER me emrin tuaj të përdoruesit. Ju mund të kontrolloni postën duke përdorur komandën 'mail'.
Shkrimi dhe programimi i skriptit është përtej kufijve, gjithçka dhe gjithçka mund të zbatohet sipas nevojës. Kjo është e gjitha për momentin, në artikullin tim të ardhshëm do t'ju jap disa shije të ndryshme të shkrimit. Deri atëherë qëndroni të qetë dhe të sintonizuar, kënaquni.