- 追加された行はこの色です。
- 削除された行はこの色です。
*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}
egrep "^d2.*" ${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