#! /bin/bash
# 宣告文件内的语法使用bash语法,于是当程序执行时,加载bash的相关环境配置文件
# 在shell脚本中,倒引号``括起来的表示要执行的命令
# `dirname $0` 获取当前shell程序的路径;cd `dirname $0` 进入当前shell程序的目录
DIRNAME=`dirname $0`
TOOL_PATH=`cd ${DIRNAME}; pwd`
echo ${TOOL_PATH}
1、替换脚本
#! /bin/bash
# 替换docker容器中的文件
# 获取当前shell程序的路径
DIRNAME=`dirname $0`
CURRENT_PATH=`cd ${DIRNAME}; pwd`
echo ${CURRENT_PATH}
# chmod -R 777 ${CURRENT_PATH}
# [ ] 和 test 两者的作用是一样的,test 的三个基本作用是判断文件、判断字符串、判断整数
# [[ ]] 功能比 test 强大,支持字符串的模式匹配
if [ ! -d ${CURRENT_PATH}/log_file ]; then
mkdir ${CURRENT_PATH}/log_file
fi
# 日志函数
LOG_PATH=`cd ${CURRENT_PATH}/log_file; pwd`
LOG_FILE_NAME="main.log"
LOG_FILE=$LOG_PATH/$LOG_FILE_NAME
function run_log(){
if [ ! -d $LOG_PATH ]; then
mkdir -p $LOG_PATH
fi
if [ ! -f $LOG_FILE ]; then
touch $LOG_FILE
fi
declare -i count
count=`du $LOG_FILE | awk '{print $1}'`
if [ $count -gt 50 ]; then
back_count=`ls $LOG_PATH | grep $LOG_FILE_NAME | wc -l`
back_file=$LOG_FILE.$back_count
mv $LOG_FILE $back_file
touch $LOG_FILE
fi
LANG=en_US.ISO8859-1
echo -n `date '+%b %d %T'` >> $LOG_FILE
filename=$0
echo -n " (file = `pwd`${file_name#*.})" >> $LOG_FILE
if [ $# -ge 2 ]; then
echo -n " (line = $2)" >> $LOG_FILE
fi
if [ $3 -eq 1 ]; then
echo "$1" >> $LOG_FILE
echo "$1"
else
echo "$1" >> $LOG_FILE
fi
return 0
}
function replace_docker_container_file(){
# 查询***容器的容器id
XX_CONTAINER_ID=$(docker ps | grep xx | head -n 1 | awk '{print $1}')
echo 'xx容器的id为:' ${XX_CONTAINER_ID}
run_log "容器id为:${XX_CONTAINER_ID}" "${LINENO}" 1
# 将虚机中的文件拷贝到xx容器中
if [[ ! -z ${XX_CONTAINER_ID} ]]; then
docker cp ${CURRENT_PATH}/xx.db ${XX_CONTAINER_ID}:/home/pvc_volume/upload
fi
# 进入容器,后台执行拷贝命令
if [[ ! -z ${XX_CONTAINER_ID} ]]; then
docker exec -it ${XX_CONTAINER_ID} /bin/bash -c "sudo cp /home/pvc_volume/upload/xx.db /home/pvc_volume/resource"
fi
if [[ ! -z ${XX_CONTAINER_ID} ]]; then
docker exec -it ${XX_CONTAINER_ID} /bin/bash -c "sudo rm -rf /home/pvc_volume/upload/xx.db /home/pvc_volume/resource/xx.db"
fi
echo '执行成功'
}
run_log "开始替换docker容器内的文件" "${LINENO}" 1
replace_docker_container_file
run_log "替换成功" "${LINENO}" 1