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.
- ‘>‘ : ang operator sa redirection maoy hinungdan sa paghimo sa file, ug kon anaa man kini, ang mga sulod ma-overwrite.
- ‘>>‘ : sa imong paggamit >>, imong gidugang ang impormasyon, imbes nga ilisan kini.
- ‘>>‘ 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.