#!/bin/sh
CURR_DIR=$(cd $(dirname $0);pwd)
TD_BASE=`su - tduser -c "echo "${TD_BASE}""`
function change_app_ip()
{
if [ $# -ne 3 ];then
echo "The param is not correct."
exit 1
fi
if [ "$1" != "app_ip" ];then
echo "The ip type is not correct."
exit 2
fi
local ip_type=$1
local old_ip=$2
local new_ip=$3
local grep_old_ip=$(echo "${old_ip}"|sed "s/\./\\./g")
local old_suffix_ip=$(echo "${old_ip}"|tr '.' '_')
local new_suffix_ip=$(echo "${new_ip}"|tr '.' '_')
#定义需要替换IP的文件夹和文件
local run_dir="${TD_BASE}/run"
local mttools_dir="${TD_BASE}/mttools"
local firewall="/etc/sysconfig/SuSEfirewall2"
#替换文件中的IP和下划线的IP
for i in ${run_dir} ${mttools} ${firewall}
do
grep -lr --exclude-dir=var ${old_ip} ${i}|xargs sed -i "s/${grep_old_ip}/${new_ip}/g"
grep -lr --exclude-dir=var ${old_suffix_ip} ${i}|xargs sed -i "s/${old_suffix_ip}/${new_suffix_ip}/g"
done
#替换文件名字中含有下划线的IP
for i in ${run_dir} ${mttools}
do
file_list=`find ${i} -name "${old_suffix_ip}"`
for file in ${file_list}
do
rename ${old_suffix_ip} ${new_suffix_ip} ${file}
done
done
}
function change_db_ip()
{
if [ $# -ne 3 ];then
echo "The param number is not correct."
exit 1
fi
if [ "$1" != "db_ip" ];then
echo "The ip type is not correct."
exit 2
fi
local ip_type=$1
local old_ip=$2
local new_ip=$3
local grep_old_ip=$(echo "${old_ip}"|sed "s/\./\\./g")
local ip_list="ip_list.dat"
cat ${CURR_DIR}/${ip_list}|grep -v "^#"|grep -v "^ $*"|grep ${ip_type}|while read line
do
change_type=`echo "${line}"|cut -d : -f 2`
change_file=`echo "${line}"|cut -d ' ' -f 2|cut -d : -f 1`
button=`echo "${line}"|awk '{print $1}'`
if [ ! "${change_file}" ];then
echo "The file "${change_file}" is not exits."
continue
fi
if [ "${button}" = "db_ip" ];then
if [ "${change_type}" = "*" ];then
grep -lr --exclude-dir=var ${old_ip} ${change_file}|xargs sed -i "s/${grep_old_ip}/${new_ip}/g"
grep -lr --exclude-dir=var ${old_ip} ${change_file}|xargs sed -i "s/${old_suffix_ip}/${new_suffix_ip}/g"
elif [ "${change_type}}" != "" ];then
grep -lr --exclude-dir=var ${old_ip} ${change_file}|xargs sed -i "s/${grep_old_ip}/${new_ip}/"
grep -lr --exclude-dir=var ${old_ip} ${change_file}|xargs sed -i "s/${old_suffix_ip}/${new_suffix_ip}/"
fi
fi
done
}
function check_ip()
{
local check_ip=$1
echo "${check_ip}"|grep "^[0-9]\{1,3\}\(\.[0-9]\{1,3\}\)\{3\}">/dev/null
if [ $? -ne 0 ];then
echo "The ip "${check_ip}" is not a regular ip."
return 1
fi
local first=`echo "${check_ip}"|cut -d ' ' -f 1`
local second=`echo "${check_ip}"|cut -d ' ' -f 2`
local third=`echo "${check_ip}"|cut -d ' ' -f 3`
local forth=`echo "${check_ip}"|cut -d ' ' -f 4`
for num in ${first} ${second} ${third} ${forth}
do
if [ ${num} -lt 0 -o ${num} -gt 255 ];then
echo "The number ${num} is not a regular IP number."
return 1
fi
done
}
function main()
{
if [ $# -ne 3 ];then
echo "The param number is not correct."
exit 1
fi
local ip_type=$1
local old_ip=$2
local new_ip=$3
check_ip ${old_ip}
check_ip ${new_ip}
if [ "${ip_type}" = "app_ip" ];then
change_app_ip $@
elif [ "${ip_type}" = "db_ip" ];then
change_db_ip $@
else
echo "The ip type is not correct."
exit 2
fi
}
main $@