#!/bin/bash#### 所有检测再check开头中操作,具体功能模块传入的参数不在检测SCRIPT_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd -P)BACKUP_PATH=$SCRIPT_DIR/SECBACKUPTIME=$(date +"%Y%m%d%H%M%S") #执行后不在更新,确保统一RUN_LOG=$SCRIPT_DIR/SECBACKUP/0ドル.log## 系统关键项检查#function system_check() {# socat 命令检测#}function backup() {unset enumunset fileenum=1ドルfile=2ドルif [ -n "$enum" ] && [ "$enum" == "setting" ] && [ -n "$file" ] && [ -f "$file" ];thenTARGET_PATH="setting"elif [ -n "$enum" ] && [ "$enum" == "upgrade" ] && [ -n "$file" ] && [ -f "$file" ]; thenTARGET_PATH="upgrade"elseecho -e "[$(date +"%Y-%m%d-%H%M%S")] 不符合备份条件,无法备份,停止执行"exit 1fimkdir -p "$BACKUP_PATH/$TARGET_PATH/$TIME"cp -rf "$file" "$BACKUP_PATH/$TARGET_PATH/$TIME"}# 设置java服务启动脚本端代理function set_java_scripts_proxy() {unset file_pathunset file_linesunset numunset java_configunset java_proxy_configunset proxy_hostunset proxy_portproxy_host=1ドル #代理地址proxy_port=2ドル #代理端口file_path=3ドル #实际的文件路径,非备份路径file_lines=$(awk 'END {print NR}' "$file_path" ) #文件总行数for line in $(seq 1 "$file_lines") # 逐行读取数据进行正则匹配doline_data=$(awk "NR==${line}" "$file_path")java_index=$(echo "$line_data" | grep -E '^java') #匹配到java开头的数据if [ -n "$java_index" ];then #计算展示java开头后面内容的行数if [ "$file_lines" == "$line" ]; then #要是两个值相等,代表代理是一行且在最后一行,赋值为1 只展示一行num=1breakfinum=$(("$file_lines" - "$line"))fidonejava_config=($(grep -A $num -E '^java' "$file_path" | tr '\n' ' ' | tr -d '\\' | awk -F ' ' '{print 0ドル}')) #过滤java配置写入 java_config数组中for ((i=0;i<"${#java_config[@]}";i++));do #检测是否已经存在代理,存在,就删除if [[ "${java_config[$i]}" =~ ^[$] ]];then #匹配如果是个以$开头 证明是变量直接跳过不在加载continuefifilter_proxy=$(echo "${java_config[$i]}" | grep -E '^-Dhttp.proxy|^-Dhttps.proxy|^-Dhttp.nonProxy') #正则检测代理是否存在,存在就删除if [ -n "$filter_proxy" ]; thenunset java_config[$i]fidonejava_config=("${java_config[@]}") #索引重建for ((i=0;i<"${#java_config[@]}";i++));do #循环写入新的代理数据if [ "$i" == 2 ];then #匹配如果是个以$开头代理配置加在后面java_proxy_config+=("${java_config[$i]}")java_proxy_config+=("-Dhttp.proxyHost=$proxy_host")java_proxy_config+=("-Dhttp.proxyPort=$proxy_port")java_proxy_config+=("-Dhttps.proxyHost=$proxy_host")java_proxy_config+=("-Dhttps.proxyPort=$proxy_port")java_proxy_config+=('-Dhttp.nonProxyHosts="127.0.0.1|onesec-redis-service|onesec-kafka-service|onesec-es-service|onesec-log-service|onesec-le-service|onesec-backend-service|onesec-base-service|onesec-monitor-service|onesec-data-service"')elsejava_proxy_config+=("${java_config[$i]}")fidonefor line in $(seq 1 "$file_lines") # 删除java开头的记录内容doline_data=$(awk "NR==${line}" "$file_path")java_index=$(echo "$line_data" | grep -E '^java') #匹配到java开头的数据if [ -n "$java_index" ] && [ "$file_lines" == "$line" ]; thensed -i "$line"d "$file_path"breakelif [ -n "$java_index" ]; thensed -i "$line,$file_lines"d "$file_path"fidonefor ((i=0;i<"${#java_proxy_config[@]}";i++));do #开始写入新数据if [ "$i" == 0 ] && [[ ${java_proxy_config[$i]} =~ ^java$ ]];then #为了美观 开头先输出三个一行printf "%s" "${java_proxy_config[$i]}${java_proxy_config[$(($i+1))]}${java_proxy_config[$(($i+1+1))]}" >> "$file_path"printf "%s\n" " \\" >> "$file_path"i=$(("$i"+2))continuefiif [[ ${java_proxy_config[$i]} =~ \.jar$ ]]; then #识别到下一个是结尾直接就一起输出就结束printf "%s" "${java_proxy_config[$i]}${java_proxy_config[$(("$i" + 1))]}" >> "$file_path"breakelif [[ ${java_proxy_config[$(($i + 1))]} =~ \.jar$ ]]; thenprintf "%s" "${java_proxy_config[$i]}${java_proxy_config[$(("$i" + 1))]}${java_proxy_config[$(("$i" + 1 + 1))]}" >> "$file_path"breakfiif [[ "${#java_proxy_config[$i]}" -lt 98 ]] && [[ "${#java_proxy_config[$(("$i"+1))]}" -le 99 ]];then #其他情况两个长度低于90的两两输出printf "%s" "${java_proxy_config[$i]}${java_proxy_config[$(("$i" + 1))]}" >> "$file_path"printf "%s\n" " \\" >> "$file_path"i=$(("$i"+1))continueelseprintf "%s" "${java_proxy_config[$i]}" >> "$file_path" #如果长度超过90就单独输出一行printf "%s\n" " \\" >> "$file_path"fidone}# 引擎代理重复执行写入function set_engine_proxy() {unset proxy_hostunset proxy_portproxy_host=1ドル #代理地址proxy_port=2ドル #代理端口engine_cfg_path="/data/onesec/store/java-onesec-server/le-service/ti_engine/engine.cfg"sed -i '/^proxy_type/d' $engine_cfg_pathsed -i '/^proxy_addr/d' $engine_cfg_pathsed -i '/^proxy_port/d' $engine_cfg_path{echo 'proxy_type http'echo "proxy_addr $proxy_host"echo "proxy_port $proxy_port"} >> $engine_cfg_path}# 病毒库代理重复执行写入function set_bd_proxy() {unset proxy_hostunset proxy_portproxy_host=1ドル #代理地址proxy_port=2ドル #代理端口bd_proxy_conf="/usr/onesec/bd-update/mirror.cnf"sed -i '/^USE_PROXY/d' $bd_proxy_confecho "USE_PROXY=$proxy_host:$proxy_port" >> $bd_proxy_conf}# nginx代理配置function set_nginx_proxy() {}# 获取服务中代理地址与代理地址端口并写代理到文件中function check_server_proxy_write_to_file() {unset PROXY_HOSTunset PROXY_PORTSERVER_SCRITPS=1ドル #脚本文件路径[ -z $SERVER_SCRITPS ] && exit 1proxy_host=($(cat $SERVER_SCRITPS | awk -F 'proxyHost=' '{print 2ドル}' | awk '{print 1ドル}' | grep -E '[^ ]')) #检测结果预期是个数组其中两个相同的地址proxy_port=($(cat $SERVER_SCRITPS | awk -F 'proxyPort=' '{print 2ドル}' | awk '{print 1ドル}' | grep -E '[^ ]')) #检测结果预期是个数组其中两个相同的端口if [ ${#proxy_host[@]} != 0 ] && [ ${#proxy_port[@]} != 0 ] && [ ${#proxy_host[@]} == ${#proxy_port[@]} ]; then # 不等于0,并且两边取的值相等继续执行echo -e "Check Proxy Success"PROXY_HOST="${proxy_host[0]}" #取索引中第一个PROXY_PORT="${proxy_port[0]}" #取索引中第一个if [[ $PROXY_HOST =~ [0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]] && [[ $PROXY_PORT =~ [0-9]{1,5} ]] && [ $PROXY_PORT -le 65535 ];thenecho -e "proxy host: $PROXY_HOST"echo -e "proxy port: $PROXY_PORT"printf "%s" TestConnection ...local connect=$(curl --connect-timeout 5 http://$PROXY_HOST:$PROXY_PORT &>/dev/null ; echo $?)[ $connect -eq 0 ] && printf "%s\n" successful || printf "%s\n" failed && exit 1# 从备份路径获取代理地址和端口,传入函数,另外需要传入要修改的文件全路径set_java_scripts_proxy "$PROXY_HOST" "$PROXY_PORT" /usr/onesec/java-onesec-base/scripts/start-base-service.shset_java_scripts_proxy "$PROXY_HOST" "$PROXY_PORT" /usr/onesec/java-onesec-server/scripts/start-log-service.shset_java_scripts_proxy "$PROXY_HOST" "$PROXY_PORT" /usr/onesec/java-onesec-server/scripts/start-le-service.shset_engine_proxy "$PROXY_HOST" "$PROXY_PORT"set_bd_proxy "$PROXY_HOST" "$PROXY_PORT"echo -e "Proxy configuration has been written successfully"elseecho -e "Proxy address is invalid , The environment may need to be adjusted for abnormalities before execution."exit 1fielseecho -e "No proxy detected"fi}function upgrade_system() {# 备份文件backup upgrade /usr/onesec/java-onesec-base/scripts/start-base-service.shbackup upgrade /usr/onesec/java-onesec-server/scripts/start-log-service.shbackup upgrade /usr/onesec/java-onesec-server/scripts/start-le-service.shbackup upgrade /data/onesec/store/java-onesec-server/le-service/ti_engine/engine.cfgbackup upgrade /usr/onesec/bd-update/mirror.cnfbackup upgrade /data/onesec/scripts/file_proxy_socat.shbackup upgrade /etc/onesec/system/nginx/nginx.conf[ -f /data/onesec/scripts/test_proxy.sh ] && backup upgrade /data/onesec/scripts/test_proxy.shbackup upgrade /var/spool/cron/root# 备份结束# 开始升级系统# 系统升级命令结束# 检查旧配置是否有改动,读取改动部分# 检查服务启动脚本中代理check_server_proxy_write_to_file /usr/onesec/java-onesec-base/scripts/start-base-service.sh}#check_server_proxy 1ドル
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。