zoukankan      html  css  js  c++  java
  • db2编目抽取

    最近迁移DB2数据库从AIX到Linux平台:需要整理所有服务器编目,服务器有aix和linux,手动整理肯定较慢切容易出错,下面写脚本解决。

    策略:

      1、编写脚本提取服务器编目的脚本,编目信息保存到文件。

      2、ansible分发到各台Linux服务器,aix没有ssh认证的需手动完成。

      3、ansible批量执行脚本,提取信息到文件。

      4、ansible拉取各台服务器编目信息文件到本机。

      5、本机编写脚本批处理,生成csv格式。

    下面给出关键处理脚本:

    获取编目信息到文件:

    #!/bin/bash
    #linux平台
    db_host=`hostname`
    db_ip=$(ifconfig -a | grep "inet addr" | grep -v "127.0.0.1" | awk '{print $2}' | awk -F':' '{print $2}')
    who_am=`whoami`
    
    db2 list db directory > ${db_ip}_${who_am}_${db_host}.db
    db2 list node directory > ${db_ip}_${who_am}_${db_host}.node
    
    
    #!/usr/bin/ksh
    #aix平台
    db_host=`hostname`
    db_ip=`ifconfig -a | sed -n "5,5p" | awk '{print $2}'`
    who_am=`whoami`
    
    db2 list db directory > ${db_ip}_${who_am}_${db_host}.db
    db2 list node directory > ${db_ip}_${who_am}_${db_host}.node
    

     批处理各台服务器编目:

    #!/bin/bash
    #bash $0 catadir linux|aix db|node
    #脚本运行时有三个参数:
    #	1、编目信息文件所在目录,
    #	2、平台linux或aix
    #	3、所要生成的编目类型,node或db
    
    if [ $# -ne 3 ]; then
      echo "bash $0 catadir linux|aix db|node"
      exit 1
    fi
    
    cata_dir="$1"
    os_sys="$2"
    db_node="$3"
    os_linux="linux"
    os_aix="aix"
    db="db"
    node="node"
    
    catalog_node="catalog_node_`date +%F`"
    catalog_db="catalog_db_`date +%F`"
    
    for file in $(find ${cata_dir} -name "*.${db_node}" | awk -F'/' '{print $2}')
      do
        #echo filename:$file
        ip_user="${file%_*}"
        db_host="${ip_user%_*}"
        db_user="${ip_user#*_}"
        #linux node
        if [[ "${os_sys}"x = "${os_linux}"x && "${db_node}"x = "${node}"x ]]; then
          cat ${cata_dir}/${file} | egrep 'Node name|entry type|Protocol|Hostname|Service name' | awk '{print $NF}' | awk '{printf $0","} NR%5==0 {print db_host","db_user}' db_host="$db_host" db_user="$db_user" >> ${catalog_node}
        fi
        #aix node
        if [[ "${os_sys}"x = "${os_aix}"x && "${db_node}"x = "${node}"x  ]]; then
          cat ${cata_dir}/${file} | grep -e "节点名" -e "目录条目类型" -e "协议" -e "主机名" -e "服务名称" | awk '{print $NF}' | awk '{printf $0","} NR%5==0 {print db_host","db_user}' db_host="$db_host" db_user="$db_user" >> ${catalog_node}
        fi
        #linux db
        if [[ "${os_sys}"x = "${os_linux}"x && "${db_node}"x = "${db}"x  ]]; then
          #间接db
          cat ${cata_dir}/${file} | egrep 'alias|Database name|entry type|partition' | awk '{print $NF}' | grep -A 1 -B 2 "Indirect" | grep -v "--" | awk '{printf $0","} NR%2==0 && NR%4!=0 {printf ","} NR%4==0 {print db_host","db_user}' db_host="$db_host" db_user="$db_user" >> ${catalog_db}
          #远程db
          cat ${cata_dir}/${file} | egrep 'alias|Database name|Node name|entry type|partition' | grep -A 1 -B 3 "Remote" | grep -v "--" | awk '{print $NF}' |awk '{printf $0","} NR%5==0 {print db_host","db_user}' db_host="$db_host" db_user="$db_user" >> ${catalog_db}
        fi
        #aix db
        if [[ "${os_sys}"x = "${os_aix}"x && "${db_node}"x = "${db}"x  ]]; then
          #间接db 
          cat ${cata_dir}/${file} | egrep '数据库别名|数据库名称|目录条目类型|目录数据库分区号' | awk '{print $NF}' | grep -A 1 -B 2 "间接" | grep -v "--" | awk '{printf $0","} NR%2==0 && NR%4!=0 {printf ","} NR%4==0 {print db_host","db_user}' db_host="$db_host" db_user="$db_user" >> ${catalog_db}
          #远程db
          cat ${cata_dir}/${file} | egrep '数据库别名|数据库名称|节点名|目录条目类型|目录数据库分区号' | grep -A 1 -B 3 "远程"| grep -v "--" | awk '{print $NF}' |awk '{printf $0","} NR%5==0 {print db_host","db_user}' db_host="$db_host" db_user="$db_user" >> ${catalog_db}
        fi
    done
    
    exit $?
    

      

  • 相关阅读:
    linux下修改Mysql的字符编码方式
    创建XMPP工程步骤
    ClickOnce清单签名取消后依然读取证书的问题
    FxCop卸载后依然生成文件夹的问题
    使用了旧版nuget的.net项目在git中的问题
    CorelDraw X8 破解激活问题
    ASUS T100TA 换屏要记
    百度SMS SDK for .Net
    网易闪电邮
    《The Practice and Theory of Bolshevism》的笔记-第114页
  • 原文地址:https://www.cnblogs.com/jjzd/p/7426924.html
Copyright © 2011-2022 走看看