Computer >> 컴퓨터 >  >> 프로그램 작성 >> BASH 프로그래밍

쉘 프로그래밍을 배우기 위한 Linux 초보자를 위한 5가지 쉘 스크립트 – 파트 II

무언가를 배우려면 실패에 대한 두려움 없이 그것을 할 필요가 있습니다. 저는 실용성을 믿으므로 Scripting Language의 실용적인 세계로 여러분을 안내할 것입니다.

쉘 프로그래밍을 배우기 위한 Linux 초보자를 위한 5가지 쉘 스크립트 – 파트 II

이 기사는 첫 번째 기사 Linux Shell 및 기본 셸 스크립팅 이해 – 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 변수의 최대값을 설정합니다. for는 루프이고 루프 내의 모든 항목은 주어진 입력 값에 대해 루프가 유효할 때까지 계속해서 실행됩니다.

샘플 출력
[[email protected] ~]# chmod 755 Special_Pattern.sh
[[email protected] ~]# ./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"

참고 :이제 색상 코드에 신경 쓰지 마세요. 당신에게 중요한 것은 점차 당신의 혀에 있을 것입니다.

경고 :단말기에 깜박임 기능이 없을 수 있습니다.

샘플 출력
[[email protected] ~]# chmod 755 Colorfull.sh
[[email protected] ~]# ./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
Hello WorldHello World

Colorfull.sh 다운로드

스크립트 3:파일/디렉토리 암호화

이 스크립트는 파일을 암호화합니다. (기억하시나요? 디렉토리 /드라이버 /…. Linux에서는 모든 것이 파일로 처리됩니다. ). 위 스크립트의 현재 제한 사항은 TAB를 사용한 이름 자동 완성을 지원하지 않는다는 것입니다. . 또한 암호화할 스크립트와 파일을 같은 폴더에 넣어야 합니다. "pinentry-gui를 설치해야 할 수도 있습니다. ", yum 사용 또는 적합 필요한 경우 패키지.

[[email protected] ~]# yum install pinentry-gui
[[email protected] ~]# 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

샘플 출력

[[email protected] ~]# chmod 755 Encrypt.sh
[[email protected] ~]# ./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 파일 이름.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
샘플 출력
[[email protected] ~]# chmod 755 Server-Health.sh
[[email protected] ~]# ./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 protected]   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
7 마이그레이션

참고 :터미널 자체에서 출력을 제공하는 스크립트를 제공했습니다. 나중에 참조할 수 있도록 출력을 파일로 가져오는 것은 어떻습니까? 리디렉션 연산자를 사용하여 구현합니다.

  1. '> ' :리다이렉션 연산자로 파일이 생성되며, 존재하는 경우 내용을 덮어씁니다.
  2. '>> ' :>>를 사용할 때 정보를 대체하는 것이 아니라 추가하는 것입니다.
  3. '>> '는 '>에 비해 안전합니다. '

Server-Health.sh 다운로드

스크립트 5:디스크 공간 확인 및 이메일 경고 보내기

파티션 PART에서 디스크를 사용할 때 이메일을 받는 것은 어떻습니까? 허용되는 최대값보다 크며 수정이 거의 없는 웹 관리자를 위한 생명의 은인 스크립트입니다.

MAX=95
[email protected]
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 다운로드

스크립트 작성 및 프로그래밍은 경계를 넘어 무엇이든 필요에 따라 구현될 수 있습니다. 지금은 여기까지입니다. 다음 기사에서 다양한 스크립팅 방식에 대해 설명하겠습니다. 그때까지 시원하게 지켜봐 주시고 즐기십시오.