自動的コブラーをインストールするためのシェルスクリプト(+改善さいっぱいピット)

はじめに:

シェルスクリプトが正常コブラーサービスをインストールすることができますが、すべての後の2つのスクリプトが便利ではないですが、また、スクリプトを書くプロセスであるが、この後に書かれたブログでは、問題の多くは、原因が存在していないのです。しかし、私は私の試行錯誤にあきらめなかった、最終的に私たちは、誰もが共有するために、今、私たちが助けることができるようにしたい、原因と解決策を見つけました!

スクリプト環境

1.linux CentOSの7系
システム2は、外部ネットワークに接続することができる
3.ネットワークモード:NATモード

実験手順

1. Linuxのシステム/ rootディレクトリにコブラースクリプトをアップロード

chmodの+ X * .shに実行権限を追加

自動的コブラーをインストールするためのシェルスクリプト(+改善さいっぱいピット)

2.詳細なスクリプトcobbler.sh

#!/ binに/ bashの

ダウンロードパッケージ

down_cobbler()
{
#ファイアウォールをオフにし、セキュリティ
systemctl停止firewalldの
setenforce 0
エコー-e "\ 033 \トン[34メートルのダウンロードコブラー関連のパッケージ... 033 [0メートル\" && SLEEP 1つの
RPM -ivh HTTPS:// DL .fedoraproject.org /パブ/ EPEL / 7 / x86_64版/パッケージ/ E / EPEL-RELEASE-7-11.noarch.rpm && && makecacheヤムヤムインストールコブラーコブラーTFTP DHCP-ServerのWeb-pykickstart HTTPDのrsync xinetdのツリー-Y
}

玉石、fttprプロファイルを変更します。

setup_file()
{
エコー-e "\ 033 \トン[34メートル正在修改コブラー相关配置文件... \ 033 [0メートル" &&スリープ1
ネット= `ifconfigコマンドのens33 | grepの"ネットマスク" | awkは'{$ 2印刷}' | カット-c 1-10`
IP = `ifconfigコマンドens33 | grepの"ネットマスク" | AWK '{$ 2印刷}' `
パス=`のOpenSSLのpasswd -1 -塩'ABC123 'ABC123' `
SED -i "101cはdefault_password_crypted:\" $パス\ "の"/ etc /コブラー/設定
のsed -i「S / ^サーバー:127.0.0.1/server:$ IP / "は/ etc /コブラー/設定は、
sedの-i "S / ^ next_server:127.0.0.1/next_server:$ IP /"は/ etc /コブラー/設定
のsed -i" S / manage_dhcp:0 / manage_dhcp:1 / "は/ etc /コブラー/設定
のsed -i "14S /はい/いいえ/" /etc/xinetd.d/tftpの
#修改DHCPん模板
のsed -i"
SED -i "22S / 192.168.1.5 / $ net.1 / gの" /etc/cobbler/dhcp.template
のsed -i "23S / 192.168.1.1 / $ net.2 / gの" /etc/cobbler/dhcp.template
SED -i "25S / 192.168.1.100 192.168.1.254/$net.100 $ net.200 /" /etc/cobbler/dhcp.template
#启动服务
systemctl RSYNCDを有効
RSYNCDを開始systemctl
にxinetdを起動しsystemctl
}

コブラー同期

cobbler_sync()
{
エコー-e "\ 033 \ T [34メートルコブラー正在同步... \ 033 [0メートル" &&スリープ1が
起動systemctlのhttpd && systemctl cobblerd &&スリープ2 &&コブラー同期&& systemctl再始動DHCPDを開始
}

システムイメージにブートファイルとオペレーティングシステムをダウンロード

loader_images()
{
エコー-e "\ 033 \ T [34メートルのブートが...システムおよびオペレーティングシステムイメージファイルにダウンロードされている033 [0メートル\" SLEEP。1 &&
コブラーGET-ローダーをスリープ状態に2 && &&マウントは/ dev / SR0を/ mntインポート--path =コブラー&& / MNT / --name = CentOSの---アーチ7-x86_64の= x86_64を
}

すべてのサービスのステータスを確認

check_service()
{
エコー-e "\ 033 \ T [34メートル正在检查所有服务状态... \ 033 [0メートル" &&スリープ1
エコー-e「\ 033 \ T [34メートル正在检查所有服务状态... \ 033 [0メートル」&&スリープ1
のhttp = `netstatの-ntap | グレップ:80 | WC -l`
COB = `systemctlステータスcobblerd | grepの"アクティブ(ランニング)" | トイレ-l `
OS =`コブラーディストリビューションのリスト| トイレ-l `
シン=`コブラー同期| WC -l`
DHCP = `systemctlステータスのdhcpd | grepの"アクティブ(ランニング)" | トイレ-l `
負荷=`コブラー取得-ローダー| | grepが「既に存在します」WC -l`
TFTP = `systemctlステータスのxinetd | grepの"アクティブ(ランニング)" | -l` WC
であれば[$ HTTP -ne 0] && [$穂軸-eq 1] && [$のOS -eq 1] && [$のシン-gt 1] && [$のDHCP -eq 1] && [$負荷-gt 1] && [$ TFTP -eq 1];

他のエコー-e "\ 033 \トン[31メートルの誤差、ご確認ください!\ 033 [0メートル"
の出口0
Fiの
}

関数のまとめ

メイン()
{
down_cobbler && setup_file && cobbler_sync && loader_images && check_service
}

#関数を実行し
、メインを

ピットと和解のプロセス

以下に示すように1コブラーは、ダウンロードパッケージを繰り返し関連します:

自動的コブラーをインストールするためのシェルスクリプト(+改善さいっぱいピット)

エラーの理由:誤っにヤムヤムコマンドをスクリプト関数を読んだ後、機能がyumのときとき、リードコマンドのyum、yumのコンテンツは、その後、再び機能を実行することだと思うように私は、関数名(YUM)とその順序(YUM)で同じを取得しているため執行機能のyum ...そう、再び無限ループにキャッチ!

自動的コブラーをインストールするためのシェルスクリプト(+改善さいっぱいピット)

解決策:関数名を変更し、任意のを解決することができると同じようにコマンドしないでください!

自動的コブラーをインストールするためのシェルスクリプト(+改善さいっぱいピット)

2.コマンドスクリプト実行エラーが、別のスクリプトに個別に、または別々に実行「のhttpd && systemctl DHCPDを再起動systemctl cobblerd &&コブラー同期を&&起動開始systemctl」は、以下に示すような情報が与えられると、正常に実行されています。

自動的コブラーをインストールするためのシェルスクリプト(+改善さいっぱいピット)

エラー分析:コブラー同期では、このコマンドは失敗し、前のコマンドが完了し実行していなかったため、コマンドコブラー同期を実行します。単一コピー、ペーストコマンドは何の問題を実行しないのはなぜか、成功することができ、他のスクリプトを実行するコマンドを分離するには?

個人的な推測:それはあまりにも速くスクリプトの実行であってもよいし、コマンドが実行されず、コブラーsyncコマンドが実行され、自然なエラー。しかし、別のスクリプトの実行またはコピーが個別に、この操作を実行するシステムに成功し、これらのコマンドを実行して、バッファ時間を与えました!

技術ダニエルの答えは:質問では、私は技術的なダニエルに尋ね、答えを与える:プロセスを同時に実行することはできません!(つまり、プロセスがあまりにも多くのコマンドを実行することができない、と私は同じだと思います。これは、Linuxカーネルの知識です)

解決策:(!使用上のブログ)1別のスクリプト2 sleepコマンドを追加し、システムが一瞬のために一時停止し、コマンドは次のとおりです。
cobblerd開始のhttpd && systemctlを起動systemctl &&睡眠2 && && systemctlコブラー同期再起動dhcpdの

結果:この問題に対する完璧なソリューション

3.スクリプトを実行しますcobbler.sh

自動的コブラーをインストールするためのシェルスクリプト(+改善さいっぱいピット)自動的コブラーをインストールするためのシェルスクリプト(+改善さいっぱいピット)
自動的コブラーをインストールするためのシェルスクリプト(+改善さいっぱいピット)
自動的コブラーをインストールするためのシェルスクリプト(+改善さいっぱいピット)

4.スクリプトを確認してください

自動的コブラーをインストールするためのシェルスクリプト(+改善さいっぱいピット)
自動的コブラーをインストールするためのシェルスクリプト(+改善さいっぱいピット)
自動的コブラーをインストールするためのシェルスクリプト(+改善さいっぱいピット)
自動的コブラーをインストールするためのシェルスクリプト(+改善さいっぱいピット)

要約:

1.このブログは、再びピットに最後の時間のための原因と解決策を見つけるためにこの時間を改善する前にブログに基づいて、知識のセクションでは、参照しているhttps://blog.51cto.com/13760351/2397130
2。ピット2に、Linuxカーネルの知識に関連し、この知識は、私は知らない、私はこれでダニエルが堪能あれば、私たちに知らせてください、先に詳述ブログに追加し、コアの知識を学習した後、それを書いていません!
必要な場合にのみ参照3.ブログのスクリプトは、私は、元のファイル情報をダウンロードするために行くことができます

おすすめ

転載: blog.51cto.com/13760351/2412169