[CyberSecurityLearning 34] Linuxスクリプト(シェルスクリプト)

目次

脚本

 簡単なスクリプト

実装プロセス:

変数の割り当て

IF判断ステートメント

単一ブランチ構造の場合

二重分岐構造の場合

マルチブランチ構造の場合

実用的なケース:イントラネット上のホストの生存状況を検出する

シェルループステートメント(for、while)

forループ

whileループ

イントラネット内のホストのライブ状態を検出します(最適化バージョン)

ケースステートメント

場合

ケースフォーマット

関数

apacheセルフスタートスクリプトを分析します

Apacheスタート機能

apacheのシャットダウン機能

Nginxセルフスタートスクリプト


脚本

スクリプトとは何ですか?効果?
Linuxのスクリプトは、実際にはWindowsシステムで作成するバッチ処理に似ていますが、どのように学習すればよいでしょうか。
上から次へ実行します。エラーが発生した場合は実行されません。次のコマンドにスキップしてください

ここでは、主にさまざまなシナリオの要件を扱い、プロセスを実現するために対応するスクリプトを作成します。スクリプト作成のさまざまな構文を理解するために、段階的に説明します。これらの文法の意味は、私たちが以前に学んだプログラミング言語で実際に理解されています。ここでは、主にその文法構造を理解して研究する必要があります。学ぶのはとても簡単で面白いことがわかります...

 
簡単なスクリプト

シーンの設定は次のとおりです。

eth0ネットワークカードのIPを午前9時に設定するように要求します。

IP:192.168.1.100/24

ゲートウェイ:192.168.1.254

午後2時にeth0ネットワークカードのIPを設定するように要求する

IP:172.16.1.100/24

ゲートウェイ:172.16.1.254

実装プロセス:

愚かな方法:

①先☆ifcfg-eth0文件清空:echo ""> / etc / sysconfig / network-scripts /ifcfg-
eth0②echo "DEVICE = eth0" >> / etc / sysconfig / network-scripts / ifcfg-eth0
   echo "TYPE = Ethernet ">> / etc / sysconfig / network-scripts / ifcfg-eth0
   echo" ONBOOT = yes ">> / etc / sysconfig / network-scripts / ifcfg-eth0
   echo" BOOYPROTO = static ">> / etc / sysconfig / network- scripts / ifcfg-eth0
   echo "IPADDR = 192.168.1.100" >> / etc / sysconfig / network-scripts / ifcfg-eth0
   echo "NETMASK = 255.255.255.0" >> / etc / sysconfig / network-scripts / ifcfg-eth0
   echo "GATEWAY = 192.168.1.254" >> / etc / sysconfig / network-scripts /ifcfg-
eth0③先関連了:ifdown eth0、再オープン启:ifup eth0

午後にまた負けて172に変更しなければなりません

スクリプトを使用する:

最初にファイルvimfixip.shを作成します(ip関数を変更したいので、zhiyiという名前を参照してください。シェルスクリプトで記述されているため、サフィックスはshです)
スクリプトの最初の行は、どのコマンドを宣言するかです。このスクリプトにはインタープリターが使用されます。shコマンドインタープリターなどを実行するには、shコマンドインタープリターの場所(/ bin / sh)を書き込みます。bashの場合は、
   2行目と3行目を次のように記述します。ポンド記号の先頭もポンド記号です。最初に、スクリプトの役割、作成時間、連絡先情報を書き留めます(書き留める必要はありません)。

③どのように機能しますか?最初に実行許可を与えます

緑色に変わった場合
は、スクリプト実行する権限があることを意味します。スクリプトの実行方法:同じディレクトリにある場合は、。/使用して実行します- " ./ fixup.sh

会社は変更するためにランダムに異なるIPを割り当てます

最適化されたスクリプトはインタラクティブなスクリプトであり、以下で説明する変数割り当て
100.1.1.100/24
10.1.1.254につながります。IP
アドレス
を入力して
ください:サブネットマスクを入力してください:ゲートウェイを入力してください:

変数の割り当て


Aは、その名前が示すように、定義した変数です。Aに値を割り当て、$ Aを介してそれが表す値(文字列)を呼び出します。

[root@Waffle Desktop]# read -p "please input ipaddr:" IP
(大写IP说明这个东西是变量,please input ipaddr是显示内容,显示的内容输入完后就存在变量里面了)
please input ipaddr:10.1.1.1
[root@Waffle Desktop]# echo $IP
10.1.1.1

スクリプトを最適化し
ます。writeread-p "please input ipaddr:"今書いたスクリプトの2行目のIP

IF判断ステートメント

単一ブランチ構造の場合

条件
がサブステートメント
fiを保持する場合(最後にfiを書き込むため)

ケース:3が5未満かどうかを判断します

[その後にスペースを入れてください。そうしないと間違ってしまいます

二重分岐構造の場合

if 条件

その後、サブステートメント

それ以外の場合はサブステートメントを保持しません

あります

ケース:6が5未満かどうかを判断します

Linuxではインデントの要件はありません

マルチブランチ構造の場合

if 条件

その後、サブステートメント

elif状態

その後、サブステートメント

それ以外の場合はサブステートメントを保持しません

あります

ケース:キーボードに入力された数字と10の関係を判別して


ください。注:[の前後にはスペースが必要です。

Linuxでは、-gtより大きいは-ltより小さい-eqに等しい

実用的なケース:イントラネット上のホストの生存状況を検出する

通常のping操作では、これを変更して、特定の出力表示を変更できます。

-cは、送信するパケット数を指定します

-i送信間隔時間(秒)

-W応答時間を待つ

[root @ Waffle Desktop] #ping -c2 -i0.2 -W2 12.34.56.79(一緒に書き込むには、2つのパケットを送信します。間隔時間は0.2秒、待機時間は2秒です)

[root @ Waffle Desktop] #ping -c2 -i0.2 -W2 12.34.56.79 &> / dev / null(これは、正しいか間違っているかにかかわらず、すべての出力を/ dev / nullにエクスポートすることを意味し、このファイルは穴に相当します

前後に2つのドットを追加します(テンキー1の左側で、一重引用符とは異なります)

最適化:

ネットワークセグメント上のホストの存続をテストしたい場合、それはあまり役に立ちません

シェルループステートメント(for、while)

値リストに従ったforループ
while条件に従ったループ

forループ

フォーマット:
値リスト内の変数のため

     、サブステートメントが
行われ

ケース:forループを使用して画面に1〜10の出力を実現するにはどうすればよいですか?

whileループ

条件付き

      サブステートメントを
実行します

ケース:画面に1〜3を出力

 

 

イントラネット内のホストのライブ状態を検出します(最適化バージョン)

続いて、以前のホストサバイバルの検出に戻ります。今回は、実際の環境でLANのホストサバイバルステータスを検出する必要があります。

ネットワークプロパティをブリッジモードに構成します

1.centos6-1のeth0ネットワークカードをブリッジモードに設定します

2.ネットワークカードの構成を変更します

[root @ Waffle Desktop] #vim / etc / sysconfig / network-scripts / ifcfg-eth0


3.スクリプトを書く

#!/ bin / bash
NET =10.0.110。foriin
{1..254}
do
    if `ping -c2 -i0.2 -w2 $ NET $ IP&> / dev / null`
    then echo -e" $ NET $ IPは\ 033 [31mup \ 033 [0メートルは」緑に赤DOWNにUP変更することです
    $ NET $ IPは\ 033 [32mdown \ 033 [0メートル"であるエコー-e他に"
    Fiが
行われ

 

whileループを見てください

#!/ bin / bash
NET = 10.1.1。
IP = 200
while [$ IP -lt 254]


    IP = IP + 1ましょう
    `のping -c2 -i0.2 -w2 $ NET $ IP&>は/ dev / null`なのであれば
    、その後エコー-e "$ NET $ IPは\ 033 [31mup \ 033 [0メートルである"
    ほかのエコー-e "$ NET $ IPは\ 033 [32mdown \ 033 [0m"
    fi
完了

ケースステートメント

場合

ケーススタディ

./case.sh centos
redhat

./case.sh redhat
centos

./cash.shxxxユースケース
.sh {redhat | centos}

#!/ bin / bash
case $ 1 in
redhat)
   echo "centos"
   ;;
centos)
   echo "redhat"
   ;;
*)-》 *表示所有
   エコー "useage $ 0 {redhat | centos}"
esac

エンパワーメント後の実行

ケースフォーマット


モードのケース変数1)
   サブステートメント
   ;;
*)
   サブステートメント
   ;;
esac

 

関数

コードの一部を変数に格納し、
呼び出すときにこの関数を実行します

ケース:Aという名前の関数を設計すると、Aを実行すると画面にOKが出力されます

関数の戻り値はecho $?(return)で取得できます。

    redhat(){         echo cetos         return 0     }     centos(){         echo redhat         return 0     }     case $ 1 in     redhat)         redhat(上記の関数の呼び出しと同等)         ;;     centos)         centos         ;;     *)         echo "Usage $ 0 {redhat | centos} "     esac

















 

 

apacheセルフスタートスクリプトを分析します

Apacheスタート機能

apacheのシャットダウン機能

これらは見覚えがありますか、それらはすべて私たちが以前に学んだことによって書かれています

次に、nginxの自動起動スクリプトを作成します

 

Nginxセルフスタートスクリプト

まず、Nginxスタートアップスクリプトnginxdを/etc/init.d/ディレクトリに作成する必要があります

 

 

 

 

おすすめ

転載: blog.csdn.net/Waffle666/article/details/114149463