トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS

Linux:いろいろなサーバの設定ファイルを集めたい の変更点

Top / Linux:いろいろなサーバの設定ファイルを集めたい

*Linux:いろいろなサーバの設定ファイルを集めたい [#f1338476]

本シェルは、前提として、SSHの無認証ログイン設定が済んでいることです。※済んでいないと、scpするたびにパスワードをきかれます。

いろいろなサーバの設定ファイルを収集するスクリプトを作ってみました。

収集対象については、ホスト名、ファイルのフルパスをTSV形式で保存し、インプットとします。

■targetfiles.txt
 test01 /etc/httpd/conf/httpd.conf
 test01 /etc/hosts
 test02 /etc/httpd/conf/httpd.conf
 test03 /etc/httpd/conf/httpd.conf

サンプルシェルでは、ワーキングディレクトリは以下のディレクトリベタ打ちですw
-/opt/confCollectTools/

シェルの内容は以下のとおり

■confCollect.sh
 BASEDIR=/opt/confCollectTools/
 TARGETFILELIST=${BASEDIR}targetfiles.txt
 
 SAVE_ROOT=${BASEDIR}collected/
 SAVE_ROOT_OLD=${BASEDIR}collected_old/
 
 rm -r ${SAVE_ROOT_OLD}
 mv ${SAVE_ROOT} ${SAVE_ROOT_OLD}
 
 cd ${BASEDIR}
 
 cat "^d2.*"  ${TARGETFILELIST} | while read LINE; 
 cat ${TARGETFILELIST} | while read LINE; 
 do
   TARGETHOST=`echo $LINE | awk {'print $1'}`
   TARGET_FULLPATH=`echo $LINE | awk {'print $2'}`
   SAVE_DIR=`echo ${SAVE_ROOT}${TARGETHOST}/``echo ${TARGET_FULLPATH%/*} | sed -e 's/^\///' -e 's/\//_/g'`
 #  echo "${TARGETHOST}  ${TARGET_FULLPATH}      ${SAVE_DIR}"
   mkdir -p ${SAVE_DIR}
   scp ${TARGETHOST}:${TARGET_FULLPATH} ${SAVE_DIR}
 done

実行すると、「/opt/confCollectTools/collected」ディレクトリ配下にホスト名でディレクトリを作成し、例えば「/etc/httpd/conf/httpd.conf」であれば「etc_httpd_conf」ディレクトリを作成してファイルを保存してくれます。
※この仕様は個人的な好みです。

この収集したディレクトリ一式をSubversion等のリポジトリに自動で登録するようなスクリプトを組めばさらに幸せになれるかもw