[ネットワークセキュリティラーニング記事32]:Linuxスクリプトの概要と応用

ここに書いて、Qianfeng Network Security調査の第2ステージが終わりました。Linuxオペレーティングシステムを学習した後、学習効果はあまり良くないと感じます。後期では、Linuxの概要に特化する予定です。結局のところ、セキュリティを強化するために強化しましょう。特に侵入テストは後で学ぶため、Linuxのスキルは高くなります。

 

ディレクトリ

 

スクリプト

簡単なスクリプト

実装プロセス

変数の割り当て

判決文なら

構造

イントラネットホストの生存状態を確認する

wileのループステートメント

フォーマットについて

例えば

ワイルフォーマット

ながらインスタンス

イントラネットホストのライブインストールステータスを確認する(アップグレード)

ケースステートメント

ケースフォーマット

機能

イントラネットのメインセンテンスの生存状況を検出する(再アップグレード)

Nginx自己起動スクリプト


スクリプト

Linuxのスクリプトは、実際にはWindowsシステムで記述したバッチプロセスに似ているので、どうやって彼を学ぶのでしょうか。

ここでは、主にさまざまなシナリオの要件を扱い、対応するスクリプトを記述してプロセスを実現します。スクリプトで記述されたさまざまな文法を段階的に理解します。これらの文法の意味は、以前に学習したプログラミング言語ですでに理解されています。ここでは、主に文法構造を理解して学習しますが、学習は非常に簡単で非常に興味深いことがわかります...

 

簡単なスクリプト

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

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

192.168.1.100/24

192.168.1.254

午後2時のeth0ネットワークカードIPの設定要求

172.16.1.100/24

172.16.1.254

実装プロセス

新しいファイルを作成する

  • vim fixip.sh

 

#!/ bin / bash
cd etc / sysconfig / network-scripts /
echo 
echo "DEVICE = eth0"> ifcfg-eth0
echo "TYPE = Ethernet" >> ifcfg-eth0
echo "ONBOOT = yes" >> ifcfg-eth0
echo " BOOTPROTO = static ">> ifcfg-eth0
echo" IPADDR = 192.168.1.100 ">> ifcfg-eth0
echo" NATMASK = 255.255.255.0 ">> ifcfg-eth0
echo" GATEWAY = 192.168.1.254 ">> ifcfg-eth0
ifdown eth0
ifup eth0

ここでは、以下について説明します。

#!bin / bashスクリプト言語を解釈するbashインタープリターを指定します

実行権限を追加する

  • chmod + x fixip.sh

実行(現在のディレクトリ)

  • ./fixip.sh

 

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

最適化スクリプトはインタラクティブスクリプトであり、以下で説明する変数の割り当てにつながります。

 

変数の割り当て

まず、これらの数行のコマンド、実行後の結果を見てみましょう

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

変数と組み合わせた読み取り命令により、ユーザーが入力した値を変数に割り当てるプロセスを実現できます。

構造:

read -p ""変数  

 変数を使用して以前のスクリプトを最適化およびアップグレードし、それを読んで、より実用的でユーザーフレンドリーにする

#!/ bin / bash
read -p "please input ipaddr:" IP
read -p "please input netmask:" MASK
read -p "please input gateway:" WAY
cd etc / sysconfig / network-scripts /
echo 
echo "DEVICE = eth0 "> ifcfg-eth0
echo" TYPE = Ethernet ">> ifcfg-eth0
echo" ONBOOT = yes ">> ifcfg-eth0
echo" BOOTPROTO = static ">> ifcfg-eth0
echo" IPADDR = $ IP ">> ifcfg- eth0
echo "NATMASK = $ MASK" >> ifcfg-eth0
echo "GATEWAY = $ WAY" >> ifcfg-eth0
ifdown eth0
ifup eth0

注:変数を追加した後、エコーの後には一重引用符ではなく二重引用符を付ける必要があります

変数の前に$を追加することを忘れないでください

 

判決文なら

構造

単一分岐構造の場合

if 条件

次にサブステートメントを設定します

されます

二重分岐構造の場合

if 条件

次にサブステートメントを設定します

そうでなければサブステートメントを形成しません

されます

多分岐構造の場合

if 条件

次にサブステートメントを設定します

elif状態

次にサブステートメントを設定します

そうでなければサブステートメントを形成しません

されます

次に、単純な単一分岐判定スクリプトを記述します

注: - Linuxはより大きいGT未満-lt等しい-eq

同様に、最初にshファイルを作成します

  • vim if.sh

#!/ bin / bash
if [3 -lt 5]
その後、「yes」
fiをエコーします

エンパワーメント

  • chmod + x if.sh

マルチブランチの例を見てみましょう

#!/ bin / bash
read -p "please input a num:" NUM
if [$ NUM -lt 5]
then echo "lt"
elif [$ NUM -eq 10]
then echo "eq"
else echo "gt"
fi

 

イントラネットホストの生存状態を確認する

通常のping操作では、特定の出力表示を変更するように変更できます。

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

-iインターバル時間を送信

-w応答時間待ち

pingステートメントの結果をifの条件として使用できますか?

出力を非表示にしたい

&>ファイルは以前の出力を別の場所にインポートします

  • ping -c2 -i0.2 -w2 12.34.56.78&> / dev / null

新しいファイルping.shを作成します。

  • vim ping.sh

#!/ bin / bash

「ping -c2 -i0.2 -w2 12.34.56.79&> / dev / null」の場合

次に「はい」をエコーし​​ます

それ以外の場合は「いいえ」をエコー

されます

注:この記号をキーボードで再生する方法英語:キーボードの数字キー1の左側

実行する権限もあります

  • chmod + x ping.sh

ここでは、事前に次のことを宣言します。pingが実行されたことが判明したIP

 

最適化:

#!/ bin / bash
read -p "please input ipaddr:" IP
if `ping -c2 -i0.2 -w2 $ IP&> / dev / null`
then echo" $ IP is up "
else echo" $ IP isダウン "
fi

テストは成功しました

制限:

ホストをテストできますが、ネットワークセグメントは機能しません

これはループを使用します。以下では、ループステートメントを紹介します

 

wileのループステートメント

forとワイプの違い

ループ数に応じたforループ(値リスト)

条件に基づくループをワイル

 画面に{1..10}を直接出力すると、次の結果が得られます

フォーマットについて

値リストの変数

行う

    サブステートメント

終わった

例えば

単純なループスクリプト

  • vim xun.sh

あなたは以前にプログラミング言語に触れたことがあると思いますので、詳細な記述は行わず、直接コードに移動します

#!/ bin / bash
for i in {1..10}
do 
    echo $ i
done

 

 

ワイルフォーマット

状態

行う

   サブステートメント

終わった

ながらインスタンス

#!/ binに/ bashの
NUM = 0
[$ NUMは3 -lt]ながら

    NUM ++せ
    エコー$ NUMが
行われ

注:let NUM ++はlet NUM = NUM​​ +!と同等です。

イントラネットホストのライブインストールステータスを確認する(アップグレード)

以前のホストの生存の検出に戻り続けます。今回は、実際の環境でのLANのホストの生存の検出を実現します。

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

ネットワークカードの構成を変更する

  • vim / etc / sysconfig / network-scripts / ifcfg-eth0

  • ifdown eth0
  • ifup eth0

  • vim ping.sh

実装のために

#!/ bin / bash
NET = 10.0.110。
{1..254}で私はのために
行う
    `のping -c2 -i0.2 -w2 $ NET $ IP&>は/ dev / null`なので場合
    $ NET $ IPは\ 033 [31mup \ 033 [0メートルで、その後エコー-e」 "
    else echo -e" $ NET $ IP is \ 033 [32mdown \ 033 [0m "
    fi
done

実装中:

#!/ bin / bash
NET = 10.0.110。
IP = 200
while [$ IP -lt 254]
    lxxxet IP = IP + 1
    if `ping -c2 -i0.2 -w2 $ NET $ IP&> / dev / null`
    then echo -e" $ NET $ IP is \ 033 [31mup \ 033 [0m "
    else echo -e" $ NET $ IP is \ 033 [32mdown \ 033 [0m "
    fi
done


 

ケースステートメント

ケース

./case.sh centos

redhat

./case.sh redhat

セント

./case xxxx

使用法case.sh {redhat | centos}

上記のケースを実現するには、caseステートメントを使用します

    レッドハットのケース$ 1 

echo "centos"
    ;;
centos)
    echo "redhat"
    ;;
*)
    echo "Usage $ 0 {redhat | centos}"
esac

エンパワーメント

  • chmod + x case.sh

ケースフォーマット

ケース変数

モード1)

   サブステートメント

   ;;

*)

   サブステートメント

   ;;

esac

 

機能

コードの一部を変数に格納する

 

Aという名前の関数を設計する

Aを実行すると、画面出力はOKです。

合格できます

エコー$?

関数の戻り値を取得(return)

 

イントラネットのメインセンテンスの生存状況を検出する(再アップグレード)

前回のホスト生存の検知に戻りましょう今回は、LAN内の全ホストの生存状況検知を実環境で実現したいと思います。

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/ディレクトリに書き込む必要があります

#!/ bin / bash
nginx = / usr / local / nginx / sbin / nginx
start(){
    echo "nginx starting .... [OK]"
    $ nginx
}
start

最適化:

#!/ bin / bash
nginx = / usr / local / nginx / sbin / nginx
start(){
    echo "nginx starting .... [OK]"
    $ nginx
}
status(){
    if `ss -antpl | grep nginx> / dev / null`
    その後、「nginx starting ....」
    をエコーし​​ますelse else "nginx stoping ...."
    fi
}
stop(){
    echo "nginx stoping .... [OK]"  
    $ nginx -sやめる

}
case $ 1 in
start)
    start
    ;;
停止)
    停止
    ;;
再スタート
    ストップ
    スタート
    ;;
*)
    echo "Usage:$ 0 {start | stop | restart}"
esac

次に、永久に開始させます

作成したnginxdスクリプトを開き、次の2行を追加します

chkconfigリストに参加する

  • chkconfig-nginxdを追加

デフォルトではオフ

レベル5をオンにします

  • chkconfig --nginxdをオンにする

さて、私たちの第5レベルが開かれました

次に、オペレーティングシステムを再起動します。

  • リブート

あなたは私たちのnginxが以来始まっていることがわかります


参照:

Qianfeng Cyber​​ Security Video Open Class:https ://www.bilibili.com/video/BV1i7411G7vm?p=158

 

元の記事を58件公開 28のように 3712を訪問

おすすめ

転載: blog.csdn.net/weixin_43252204/article/details/105569901