5 Shell Scripts para sa Linux Newbies nga Makakat-on sa Shell Programming - Part II


Aron makakat-on sa usa ka butang nga kinahanglan nimo nga buhaton kini, nga wala’y kahadlok nga dili molampos. Nagtuo ako sa pagkapraktikal ug busa mag-uban kanimo sa praktikal nga kalibutan sa Scripting Language.

Kini nga artikulo usa ka extension sa among Unang artikulo Sabta ang Linux Shell ug Basic Shell Scripting - Part I, diin gihatagan ka namo og lami sa Scripting, nga nagpadayon nga dili ka namo mahigawad niini nga artikulo.

Script 1: Pagdrowing og Espesyal nga Sumbanan

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

Kadaghanan sa naa sa taas nga 'mga yawe nga mga pulong' mahibal-an nimo ug kadaghanan kanila nagpatin-aw sa kaugalingon. pananglitan, ang MAX nagtakda sa kinatas-ang bili sa variable, kay usa ka loop ug bisan unsa nga sulod sa loop magpadayon sa pagpatuman sa balik-balik hangtud nga ang loop balido alang sa gihatag nga bili sa input.

 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

Kung nahibal-an nimo ang bisan unsang programming language, ang pagkat-on sa script sa ibabaw dili lisud, bisan kung bag-o ka sa pag-compute, programming ug Linux dili kini lisud.

Script 2: Paghimo og Mabulukon nga Script

Kinsa ang nag-ingon, ang Linux walay kolor ug makalaay, i-save ang mga code sa ubos sa bisan unsa nga [tuldok] sh, himoa kini nga ma-executable ug Run kini, ayaw kalimot sa pagsulti kanako kung giunsa kini, Hunahunaa kung unsa ang imong makab-ot, ipatuman kini sa bisan diin.

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

Mubo nga sulat: Ayaw kabalaka bahin sa code sa kolor karon, Kadtong importante kanimo anaa sa imong dila, sa hinay-hinay.

Pasidaan: Ang imong terminal mahimong walay pasilidad sa pagkidlap.

 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

Script 3: Pag-encrypt og File/Direktoryo

Kini nga script mag-encrypt sa usa ka file (hinumdomi? direktoryo/driver/…. ang tanan giisip nga file, sa Linux). Ang kasamtangan nga limitasyon sa script sa ibabaw mao nga dili kini pagsuporta sa awtomatikong pagkompleto sa ngalan gamit ang TAB. Dugang pa, kinahanglan nimo nga ibutang ang script ug file aron ma-encrypt sa parehas nga folder. Mahimong kinahanglan nimo nga i-install ang \pinentry-gui, gamit ang yum o apt nga pakete, kung gikinahanglan.

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

Paghimo og usa ka file nga gitawag og Encrypt.sh ug ibutang ang mosunod nga script, himoa kini nga executable ug padagana kini sama sa gipakita.

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

Sample nga Output

 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 : Kini mag-encrypt sa imong file, gamit ang passkey aka password. Niini nga proseso sa pagkat-on wala gayud nimo mahunahuna nga ang aktuwal nga proseso sa pagkat-on mahimong ingon ka sayon. Busa human sa pag-encrypt sa usa ka file unsa ang imong gikinahanglan? Dayag nga! pag-decrypt sa file. Ug gusto ko ikaw - ang tigkat-on, ang magbabasa nga magsulat sa script sa pag-decryption sa imong kaugalingon, ayaw kabalaka nga dili ko ikaw biyaan sa tunga, gusto ko nga makakuha ka usa ka butang gikan sa kini nga artikulo.

Mubo nga sulat: gpg -d filename.gpg > filename mao ang kinahanglan nimong ipatuman sa imong decryption script. Mahimo nimong i-post ang imong script sa komento kung malampuson, kung dili mahimo nimong hangyoon ako nga isulat kini alang kanimo.

Script 4: Pagsusi sa Paggamit sa Server

Ang pagsusi sa paggamit sa server usa sa importante nga buluhaton sa usa ka administrador, ug ang usa ka maayo nga tigdumala mao ang usa nga nahibal-an kung unsaon pag-automate ang iyang adlaw-adlaw nga buluhaton. Sa ubos mao ang script nga maghatag daghang ingon nga kasayuran bahin sa imong server. Susiha kini sa imong kaugalingon.

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

Mubo nga sulat: Gihatagan ko ikaw sa script nga naghatag sa output sa terminal mismo, unsaon pagkuha sa output sa usa ka file alang sa umaabot nga pakisayran. Ipatuman kini gamit ang redirect operator.

  1. ‘>‘ : ang operator sa redirection maoy hinungdan sa paghimo sa file, ug kon anaa man kini, ang mga sulod ma-overwrite.
  2. ‘>>‘ : sa imong paggamit >>, imong gidugang ang impormasyon, imbes nga ilisan kini.
  3. ‘>>‘ luwas, kon itandi sa ‘>‘

Script 5: Susiha ang Disk Space ug Nagpadala ug Email Alert

Unsa man ang bahin sa pagkuha sa usa ka email kung ang paggamit sa disk sa partition PART mas dako kaysa Maximum nga gitugotan, kini usa ka script sa pagluwas sa kinabuhi alang sa mga tigdumala sa web nga adunay gamay nga pagbag-o.

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

Pahinumdom: Kuhaa ang USER gamit ang imong user name. Mahimo nimong susihon ang mail gamit ang 'mail' nga mando.

Ang pagsulat sa script ug pagprograma lapas sa mga utlanan, bisan unsa ug tanan mahimong ipatuman kung gikinahanglan. Mao ra kana sa karon, Sa akong sunod nga artikulo hatagan ko ang imong lainlaing mga lami sa scripting. Hangtud unya magpabilin nga cool ug tuned, enjoy.