目次
実用的なケース:イントラネット上のホストの生存状況を検出する
イントラネット内のホストのライブ状態を検出します(最適化バージョン)
脚本
スクリプトとは何ですか?効果?
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/ディレクトリに作成する必要があります