shell配置模板

《按ctrl+A全选复制粘贴》

#!/bin/bash

# vim:sw=4:ts=4:et

<

AUTHOR:<邮箱号>

DATE:2021-04-21

DESCRIBE:描述脚本主要功能

SYSTEM:CentOS7/RedHat7

WARNING:警告信息

MODIFY:记录修改信息,方便查看和维护

INFO

export LC_ALL="zh_CN.UTF-8" #支持中文

set -e #打开异常退出功能

# set -x #打开Debug功能

######################定义变量######################

source /etc/profile #避免用ansible、Jenkins执行shell脚本出现环境变量不对的问题

WORKDIR="$(cd $(dirname "$0") || exit 1;pwd)" #脚本所在路径

echo "Current Excute: bash ${WORKDIR}/$0 $@"

function_dir=${WORKDIR}/myfunction.lib

#创建日志文件

if [[ ! -d ${WORKDIR}/logs ]];then

mkdir -p ${WORKDIR}/logs

else

rm -f ${WORKDIR}/logs/*.log

fi

[[ $UID -ne 0 ]] && echo "[ERROR] Please Use root Excute......" && exit 1

#输出信息

# ${FUNCNAME[0]代表当前函数名,$LINENO代表当前代码行号

echo "$(date "+%Y-%m-%d %T.%N")[ERROR ${FUNCNAME[0]}:$LINENO] Invalid Param"

echo "$(date "+%Y-%m-%d %T.%N")[INFO]:Install Success"

#加载函数库

if [[ -f "$function_dir" ]];then

source $function_dir

else

echo -e "\033[31m函数库不存在\033[0m"

exit 71

fi

######################功能函数######################

#检查环境

Check_Env() {

echo "[INFO] Begin Check_Env..."

[[ $UID -ne 0 ]] && echo "[ERROR] Please Use Admin(root) Excute......" && exit 1

#检查命令是否存在

for cmd_bin in curl mvn

do

if ! command -v ${cmd_bin} &> /dev/null;then

echo "[ERROR] ${cmd_bin} command Not Exist" && exit 1

fi

done

echo "[INFO] Check_Env Success"

}

#帮助信息

Help() {

cat << EOF

Usage:

========================================================

optional arguments:

-h 提供帮助信息

-num 虚拟机编号

EXAMPLE:

bash $0 -num 10 web1 eth0 192.168.4.1/24

EOF

}

#打印脚本说明

Print() {

cat << EOF

##########################################################

#1、AUTHOR:

#2、DATE:2020-01-11

#3、功能:为ubuntu系统配置本地apt源和网络apt源

#4、注意事项:配置本地apt源需确保该脚本的同级目录下有正确的离线apt源

#5、制作离线apt源可参考:https://blog.csdn.net/anqixiang/article/details/100018413

##########################################################

EOF

}

#系统版本

System_Version() {

cat << EOF

1.ubuntu14.04

2.ubuntu16.04

3.ubuntu18.04

EOF

}

#######################主函数#######################

[[ $# -ne 1 ]] && echo "[ERROR] Invalid Param!!! eg:bash $0 ansible_path" && exit 1

[[ $# -le 5 ]] && echo "[ERROR] Invalid Param!!!,Please Excute:bash $0 -h" && exit 1

#主函数

main() {

Print

cecho 32 "开始执行......"

echo "1.本地源"

echo "2.网络源"

read -p "请选择:" choice

case ${choice} in

1)

Conf_Apt;;

2)

echo "1.ubuntu14.04"

echo "2.ubuntu16.04"

echo "3.ubuntu18.04"

read -p "请选择系统版本:" choice

case ${choice} in

1)

Conf_Ubuntu14.04;;

2)

Conf_Ubuntu16.04;;

3)

Conf_Ubuntu18.04;;

*)

cecho 31 "Invalid option!"

esac

;;

*)

cecho 31 "Invalid option!"

esac

}

main

if [[ $# -eq 0 ]];then

Excute_All

elif [[ "x$1" == "x-c" -a "$#" -eq 2 ]];then

case $2 in

system)

Init_System;;

*)

cecho 31 "Invalid option:bash `basename $0` [-h]"

esac

elif [[ "x$1" == "x-h" ]];then

Help

else

Help && exit 1

fi

[[ $# -eq 0 ]] && HELP

while getopts :hnum::a: ARGS

do

case $ARGS in

h)

HELP;;

nu|m)

Name=rh7_node$OPTARG;;

\?)

cecho 31 "Invalid option:bash `basename $0` [-h]"

esac

done