BASHプログラミング
 Computer >> コンピューター >  >> プログラミング >> BASHプログラミング

Linux初心者がシェルプログラミングを学ぶための5つのシェルスクリプト–パートII

失敗することを恐れずに、何かを学ぶためにあなたはそれをする必要があります。私は実用性を信じているので、スクリプト言語の実用的な世界にあなたを連れて行きます。

Linux初心者がシェルプログラミングを学ぶための5つのシェルスクリプト–パートII

この記事は、最初の記事「Linuxシェルと基本的なシェルスクリプトを理解する-パートI」の延長であり、この記事であなたを失望させないように続けて、スクリプトの味を紹介しました。

スクリプト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はループであり、ループ内のすべてのものは、指定された入力値に対してループが有効になるまで何度も実行されます。

サンプル出力
[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は無色です 退屈な場合は、以下のコードを任意の[ドットに保存してください ] sh 、実行可能にして実行します。それがどのようなものであったかを忘れずに教えてください。何を達成できるかを考え、どこかに実装してください。

#!/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」をインストールする必要がある場合があります 」、 yumを使用 またはapt 必要に応じてパッケージ。

[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:サーバー使用率の確認

サーバーの使用率を確認することは、管理者の重要なタスクの1つであり、優れた管理者とは、日常のタスクを自動化する方法を知っている管理者です。以下は、サーバーに関する多くのそのような情報を提供するスクリプトです。自分で確認してください。

#!/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. >> ‘は‘ > と比較して安全です ‘

サーバーのダウンロード-Health.sh

スクリプト5:ディスク容量を確認してメールアラートを送信する

パーティションPARTでディスクを使用するときにメールを受け取るのはどうですか 最大許容値よりも大きいため、ほとんど変更を加えずにWeb管理者向けのライフセーバースクリプトです。

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

:「ユーザー」を削除します 」とユーザー名。 「メール」を使用してメールを確認できます ‘コマンド。

Check-Disk-Space.shをダウンロード

スクリプトの作成とプログラミングは境界を超えており、必要に応じて何でもすべてを実装できます。今のところこれですべてです。次の記事では、さまざまな種類のスクリプトを紹介します。それまでは、涼しく、調整して、楽しんでください。


  1. Linuxで効果的なBashスクリプトを作成するための10の便利なヒント

    シェルスクリプトは、Linuxで学習/実行できるプログラミングの最も簡単な形式です。さらに言えば、タスクを自動化し、ほんの数例を挙げると、新しいシンプルなユーティリティ/ツールを開発するためのシステム管理に必要なスキルです。 この記事では、効果的で信頼性の高いbashスクリプトを作成するための10の便利で実用的なヒントを紹介します。これらには、次のものが含まれます。 1。スクリプトでは常にコメントを使用する これは、シェルスクリプトだけでなく、他のすべての種類のプログラミングにも適用される推奨される方法です。スクリプトにコメントを書くと、あなたや他の誰かがスクリプトを読んで、スクリプトのさ

  2. ShellCheck –シェルスクリプトの警告と提案を表示するツール

    ShellCheck は、bash/shシェルスクリプトの不正なコードに関する警告と提案を表示する静的分析ツールです。いくつかの方法で使用できます。https://www.shellcheck.net(常に最新のgitに同期されている)のオンラインエディター(Ace – JavaScriptで記述されたスタンドアロンコードエディター)にシェルスクリプトを貼り付けることにより、Webからコミットします。これは、ShellCheckをすぐにフィードバックするための最も簡単な方法です。 または、マシンにインストールしてターミナルから実行し、テキストエディタやビルドスイートまたはテストスイートと統