「怠け者Shellスクリプト」の5つ-分散システムプロファイルをワンタッチで変更


0.背景
分散型導入プログラムの場合,20台近くの機器に同じ環境を導入してデータ収集を行った.プログラムを交換するときに、セットを修正できるかどうか、他のマシンは1ステップscp、1ステップスクリプトを実行するだけです.構成をワンクリックで変更するのが、本明細書の目的です.
1.実現要求
1、修正*.shの実行可能権限;2、表名の最初の2文字を自動的に取得し、それに応じてすべてのファイル名を統一的に変更する.3、プロファイルのmysqlテーブル名、mysqlアドレスを変更する.4、Javaプログラムが実行するstart_を他の既存の構成から読み取り、変更するnum, end_id値.
2.コアスクリプトは次のとおりです.
簡略化されたバージョン:
[root@localhost tt_process_detail]# cat change_conf_sim.sh
#      
dst_mysql_ip="10.0.1.30"

processName=$(echo `pwd` | awk -F "/" '{print $4}')
city_code=`echo ${processName:0:2}`

find ./ -name "*.sh" | xargs chmod a+x

#      
for((i=1;i<=4;i++))
do
  mv yt_ent_p${i} ${city_code}_ent_p${i}
done;

#    
dst_table_name="${city_code}_company_info"

#    
for((i=1;i<=4;i++))
do
#      start_num, end_id 
#          
  p_begin=`sed -n 30p ../${city_code}_process/${city_code}_ent_p${i}/conf/configuration.xml | grep -o '[0-9]\+'`
  p_end=`sed -n 36p ../${city_code}_process/${city_code}_ent_p${i}/conf/configuration.xml | grep -o '[0-9]\+'`

 #             
  sed -i "30s/.*/${p_begin}/" ./${city_code}_ent_p${i}/conf/configuration.xml
  sed -i "36s/.*/${p_end}/" ./${city_code}_ent_p${i}/conf/configuration.xml

  #    
  sed -i "s#te_company_info#${dst_table_name}#g" ./${city_code}_ent_p${i}/conf/configuration.xml
  sed -i "s#10.8.5.10#${dst_mysql_ip}#g" ./${city_code}_ent_p${i}/conf/configuration.xml
done;

3.変数ネスト変数の例
[root@localhost hz_process_detail]# cat test.sh
#!/bin/bash

p1_begin=11;
p2_begin=22;

for ((i=1;i<=2;i++))
do
  begin=p${i}_begin
  eval p_begin_no=$(echo \$$begin)
  echo $p_begin_no
done;

4.ipアドレスを取得する方法:
[root@localhost tt_process_detail]# cat tt_ent_p1/conf/configuration.xml | grep "jdbc" | awk -F "/" {'print $3'}
10.0.1.30

4.まとめ
1)自動的に実現できるものは、絶対に手動で修正しない.2)20セットのプログラムは、単純に手動で修正し、1時間近くかかり、検査エラー、検証時間を含む.スクリプト実装、scpレプリケーション20セット、各マシンはスクリプトを実行し、10分以内に完了します.3)ここでshell下でxmlを修正することについてstackoverflowはxmlstarletツールに言及し,後で検討する.本明細書で使用する指定行を取り、指定行を書く巧みな方法.
2016-10-25 20:42家の窓の前で
作者:铭毅天下転載出典を明記してください、原文の住所:http://blog.csdn.net/laoyang360/article/details/52926943もし本文があなたに役に立つと感じたら、「トップ」をクリックして支持してください.あなたの支持は私が書くことを堅持する最大の動力です.ありがとうございます.