Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม BASH

5 Shell Scripts สำหรับมือใหม่ Linux เพื่อเรียนรู้การเขียนโปรแกรม Shell – ตอนที่ II

ในการเรียนรู้สิ่งที่คุณต้องทำโดยไม่ต้องกลัวว่าจะไม่ประสบความสำเร็จ ฉันเชื่อในการใช้งานจริงและด้วยเหตุนี้จะพาคุณไปสู่โลกแห่งการใช้ภาษาสคริปต์

5 Shell Scripts สำหรับมือใหม่ Linux เพื่อเรียนรู้การเขียนโปรแกรม Shell – ตอนที่ II

บทความนี้เป็นส่วนเสริมของบทความแรกของเรา ทำความเข้าใจเกี่ยวกับ Linux Shell และ Basic Shell Scripting – ส่วนที่ 1 ซึ่งเราได้นำเสนอเกี่ยวกับการเขียนสคริปต์ให้กับคุณ โดยจะดำเนินการต่อว่าจะไม่ทำให้คุณผิดหวังในบทความนี้

สคริปต์ 1:การวาดรูปแบบพิเศษ

#!/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, Tecmint.com is always there"

'คำสำคัญ . ข้างต้นส่วนใหญ่ ' คุณจะรู้จักและส่วนใหญ่อธิบายตนเอง เช่น MAX ตั้งค่าสูงสุดของตัวแปรสำหรับเป็นลูปและสิ่งใด ๆ ภายในลูปจะทำงานซ้ำแล้วซ้ำอีกจนกว่าลูปจะถูกต้องสำหรับค่าอินพุตที่กำหนด

ตัวอย่างผลลัพธ์
[admin@wsxdn.com ~]# chmod 755 Special_Pattern.sh
[admin@wsxdn.com ~]# ./Special_Pattern.sh
Enter Number between (5 to 9) : 6
       .
      . .
     . . .
    . . . .
   . . . . .
  . . . . . .
  . . . . . .
   . . . . .
    . . . .
     . . .
      . .
       .

                         Whenever you need help, Tecmint.com is always there

หากคุณไม่ค่อยรู้เรื่องภาษาโปรแกรมใดๆ การเรียนรู้สคริปต์ด้านบนนั้นไม่ยาก แม้ว่าคุณจะยังใหม่ต่อการคำนวณ การเขียนโปรแกรม และ Linux ก็ไม่ยากเลย

ดาวน์โหลด Special_Pattern.sh

สคริปต์ 2:การสร้างสคริปต์ที่มีสีสัน

ใครว่า Linux ไม่มีสี และน่าเบื่อ บันทึกรหัสด้านล่างเป็นอะไรก็ได้ [จุด ] ทำให้สามารถเรียกใช้งานได้และเรียกใช้ อย่าลืมบอกฉันว่ามันเป็นอย่างไร คิดดูว่าคุณสามารถทำอะไรได้บ้าง นำไปใช้ที่ไหนสักแห่ง

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

หมายเหตุ :อย่าเพิ่งกังวลกับรหัสสีตอนนี้ สิ่งที่สำคัญที่สุดสำหรับคุณจะอยู่ที่ลิ้นของคุณค่อยๆ

คำเตือน :เทอร์มินัลของคุณอาจไม่สามารถกะพริบได้

ตัวอย่างผลลัพธ์
[admin@wsxdn.com ~]# chmod 755 Colorfull.sh
[admin@wsxdn.com ~]# ./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

ดาวน์โหลด Colorfull.sh

สคริปต์ 3:เข้ารหัสไฟล์/ไดเรกทอรี

สคริปต์นี้จะเข้ารหัส ไฟล์ (จำได้ไหม ไดเรกทอรี /คนขับรถ /.... ทุกอย่างถือเป็นไฟล์ใน Linux ). ข้อจำกัดปัจจุบันของสคริปต์ข้างต้นคือไม่รองรับการเติมชื่ออัตโนมัติโดยใช้ TAB . นอกจากนี้ คุณต้องวางสคริปต์และไฟล์เพื่อเข้ารหัสในโฟลเดอร์เดียวกัน คุณอาจต้องติดตั้ง “pinentry-gui ” โดยใช้ ยำ หรือ ฉลาด แพ็คเกจหากต้องการ

[admin@wsxdn.com ~]# yum install pinentry-gui
[admin@wsxdn.com ~]# apt-get install pinentry-gui

สร้างไฟล์ชื่อ “Encrypt.sh ” และวางสคริปต์ต่อไปนี้ ทำให้สามารถเรียกใช้งานได้และเรียกใช้ตามที่แสดง

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

ตัวอย่างผลลัพธ์

[admin@wsxdn.com ~]# chmod 755 Encrypt.sh
[admin@wsxdn.com ~]# ./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 :สิ่งนี้จะเข้ารหัสไฟล์ของคุณ โดยใช้รหัสผ่านที่รู้จักว่า รหัสผ่าน . ในกระบวนการเรียนรู้นี้ คุณจะไม่เคยคิดว่ากระบวนการเรียนรู้ที่แท้จริงจะง่ายขนาดนั้น ดังนั้นหลังจากเข้ารหัสไฟล์แล้วคุณต้องการอะไร? อย่างชัดเจน! กำลังถอดรหัสไฟล์ และฉันต้องการให้คุณ – ผู้เรียน ผู้อ่านเขียนสคริปต์ถอดรหัสด้วยตัวเอง ไม่ต้องกังวลว่าฉันจะไม่ทิ้งคุณไว้ตรงกลาง ฉันแค่ต้องการให้คุณได้รับประโยชน์จากบทความนี้

หมายเหตุ :gpg -d filename.gpg> ชื่อไฟล์ คือสิ่งที่คุณต้องใช้ในสคริปต์ถอดรหัสของคุณ คุณอาจโพสต์สคริปต์ในความคิดเห็นหากสำเร็จ ถ้าไม่คุณสามารถขอให้ฉันเขียนสคริปต์ให้คุณ

ดาวน์โหลด Encrypt.sh

สคริปต์ 4:การตรวจสอบการใช้งานเซิร์ฟเวอร์

การตรวจสอบการใช้เซิร์ฟเวอร์เป็นงานที่สำคัญอย่างหนึ่งของผู้ดูแลระบบ และผู้ดูแลระบบที่ดีคือผู้ที่รู้วิธีทำให้งานประจำวันของเขาเป็นแบบอัตโนมัติ ด้านล่างนี้เป็นสคริปต์ที่จะให้ข้อมูลดังกล่าวมากมายเกี่ยวกับเซิร์ฟเวอร์ของคุณ ตรวจสอบด้วยตัวคุณเอง

#!/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
ตัวอย่างผลลัพธ์
[admin@wsxdn.com ~]# chmod 755 Server-Health.sh
[admin@wsxdn.com ~]# ./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              admin@wsxdn.com   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

หมายเหตุ :ฉันได้ให้สคริปต์ที่ให้ผลลัพธ์ในเทอร์มินัลแล้ว เกี่ยวกับการรับเอาต์พุตในไฟล์สำหรับการอ้างอิงในอนาคต ใช้งานโดยใช้ตัวดำเนินการเปลี่ยนเส้นทาง

  1. > ' :ตัวดำเนินการเปลี่ยนเส้นทางทำให้เกิดการสร้างไฟล์ และหากมีอยู่ เนื้อหาจะถูกเขียนทับ
  2. >> ' :เมื่อคุณใช้>> คุณกำลังเพิ่มข้อมูล แทนที่จะแทนที่ข้อมูล
  3. >> ' ปลอดภัยเมื่อเทียบกับ '> '

ดาวน์โหลด Server-Health.sh

สคริปต์ 5:ตรวจสอบพื้นที่ดิสก์และส่งการแจ้งเตือนทางอีเมล

วิธีการรับอีเมลเมื่อใช้ดิสก์ในพาร์ติชั่น PART ใหญ่กว่าค่าสูงสุดที่อนุญาต เป็นสคริปต์ช่วยชีวิตสำหรับผู้ดูแลเว็บที่มีการดัดแปลงเล็กน้อย

MAX=95
admin@wsxdn.com
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

หมายเหตุ :ลบ “USER ” ด้วยชื่อผู้ใช้ของคุณ คุณสามารถตรวจสอบอีเมลโดยใช้ 'อีเมล ' คำสั่ง

ดาวน์โหลด Check-Disk-Space.sh

การเขียนสคริปต์และการเขียนโปรแกรมอยู่เหนือขอบเขต ทุกสิ่งสามารถนำไปใช้ได้ตามต้องการ นั่นคือทั้งหมดสำหรับตอนนี้ ในบทความหน้าของฉัน ฉันจะนำเสนอสคริปต์ที่แตกต่างออกไป จนกว่าจะเย็นและติดตามเพลิดเพลิน