当前位置: 首页 > wzjs >正文

哪些网站可以做宣传网站500

哪些网站可以做宣传,网站500,做淘宝网站的编程实例,东莞网站设计排行榜1、前言 需要编写一个shell脚本支持 1、修改.so文件 2、修改配置文件 3、执行jar包 2、代码解析 2.1、修改.so文件 so_file_dir"/opt/casb/xxx/lib" # 处理.so文件 cd "$so_file_dir" || { echo "错误: 无法进入目录 $so_file_dir"; exit 1; } …

1、前言

需要编写一个shell脚本支持

1、修改.so文件

2、修改配置文件

3、执行jar包

2、代码解析

2.1、修改.so文件

so_file_dir="/opt/casb/xxx/lib"

# 处理.so文件
cd "$so_file_dir" || { echo "错误: 无法进入目录 $so_file_dir"; exit 1; }
if [ -e "libCSCipherJNI-release-2.3.8.so" ]; then
    echo "目标.so文件已存在"
else
    so_files=(libCSCipherJNI-release-*.so)
    if [ -e "${so_files[0]}" ]; then
        mv "${so_files[0]}" libCSCipherJNI-release-2.3.8.so
        echo "已重命名.so文件"
    else
        echo "错误: 未找到匹配的.so文件"; exit 1
    fi
fi

2.2、修改配置文件(难点在这个)

# 复制配置文件
if [ -e "$source_file" ]; then
    cp "$source_file" "$target_file"
    echo "已复制配置文件"
else
    echo "错误: 源配置文件不存在"; exit 1
fi

# 替换配置项
cp "$target_file" "${target_file}.bak"

# 安全转义字符串中的特殊字符
escape_sed() {
    echo "$1" | sed -e 's/[\/&]/\\&/g'
}

# 替换函数(带逗号后缀)
replace_property_comma() {
    local config_name="$1"
    local config_value="$2"
    local escaped_name=$(escape_sed "$config_name")
    local escaped_value=$(escape_sed "$config_value")

    # 查找配置项(忽略等号周围空格)
    local existing_line=$(grep -E "^[[:space:]]*$escaped_name[[:space:]]*=[[:space:]]*" "$target_file")

    if [ -n "$existing_line" ]; then
        # 提取当前配置项的值部分(考虑等号周围的空格)
        current_value=$(echo "$existing_line" | sed -E "s/^[[:space:]]*$escaped_name[[:space:]]*=[[:space:]]*//")

        # 如果当前值和要设置的值不同,才进行替换
        if [ "$current_value" != ",$escaped_value,,,,,," ]; then
            # 使用更灵活的正则表达式匹配(忽略等号周围空格)
            sed -i.bak -E "s/^([[:space:]]*$escaped_name[[:space:]]*=[[:space:]]*).*/\1,$escaped_value,,,,,,,/" "$target_file"
            echo "✓ 已更新: $config_name=,$escaped_value"
        else
            echo "配置项 $config_name 值未改变,无需更新"
        fi
    else
        echo "⚠️ 配置项 $config_name 不存在,跳过修改"
    fi
}

# 替换函数(直接为值,不带逗号)
replace_property_value() {
    local config_name="$1"
    local config_value="$2"
    local escaped_name=$(escape_sed "$config_name")
    local escaped_value=$(escape_sed "$config_value")

    # 查找配置项(忽略等号周围空格)
    local existing_line=$(grep -E "^[[:space:]]*$escaped_name[[:space:]]*=[[:space:]]*" "$target_file")

    if [ -n "$existing_line" ]; then
        # 提取当前配置项的值部分(考虑等号周围的空格)
        current_value=$(echo "$existing_line" | sed -E "s/^[[:space:]]*$escaped_name[[:space:]]*=[[:space:]]*//")

        # 如果当前值和要设置的值不同,才进行替换
        if [ "$current_value" != "$escaped_value" ]; then
            # 使用更灵活的正则表达式匹配(忽略等号周围空格)
            sed -i.bak -E "s/^([[:space:]]*$escaped_name[[:space:]]*=[[:space:]]*).*/\1$escaped_value/" "$target_file"
            echo "✓ 已更新: $config_name=$escaped_value"
        else
            echo "配置项 $config_name 值未改变,无需更新"
        fi
    else
        echo "⚠️ 配置项 $config_name 不存在,跳过修改"
    fi
}

# 根据模式执行不同配置
case "$MODE" in
    en)
        echo "==== 配置加密模式 ===="

        # 设置加密参数(前4个带逗号,后2个不带)
        replace_property_comma "export.columns.keyId" "$paramA"
        replace_property_comma "export.columns.metadata" "$paramB"
        replace_property_comma "export.columns.algorithm" "$paramC"
        replace_property_comma "export.columns.iv" "$paramD"
        replace_property_value "EN_DE_CRYPT_MODE" "0"
        replace_property_value "RENAME_SUFFIX" "plain.csv"

        ACTION="加密"
        ;;
    de)
        echo "==== 配置解密模式 ===="

        # 设置解密参数(前4个带逗号,后2个不带)
        replace_property_comma "export.columns.keyId" "$paramA"
        replace_property_comma "export.columns.metadata" "$paramB"
        replace_property_comma "export.columns.algorithm" "$paramC"
        replace_property_comma "export.columns.iv" "$paramD"
        replace_property_value "EN_DE_CRYPT_MODE" "1"
        replace_property_value "RENAME_SUFFIX" "cipher.csv"

        ACTION="解密"
        ;;
    *)
        echo "错误: 未知模式 '$MODE' (支持: en=加密, de=解密)"
        exit 1
        ;;
esac

2.3、执行jar包

# 执行 Java 程序
echo "==== 开始执行$ACTION ===="
cd "$target_dir" || { echo "错误: 无法进入目录 $target_dir"; exit 1; }
if [ -e "$users_csv_file" ]; then
    java -jar decryption*.jar user.properties users.csv
else
    echo "错误: 数据文件 $users_csv_file 不存在"; exit 1
fi

echo "==== $ACTION操作已完成 ===="

3、修改配置文件遇到问题:配置项在配置文件里有,但是就是找不到

EN_DE_CRYPT_MODE = 0

RENAME_SUFFIX = plain.csv 

3.1、原因

因为=号的前后空格导致,需要匹配空格才行。

3.2、解决方法

关键点回顾

  1. 空格处理:使用 [[:space:]]* 正则表达式匹配任意数量的空格,包括制表符和换行符
  2. 值提取:改进了值提取逻辑,确保能正确获取等号后的实际值
  3. 替换精度:在替换时保留了原有的空格格式,只修改值部分

# 替换函数(带逗号后缀)
replace_property_comma() {
    local config_name="$1"
    local config_value="$2"
    local escaped_name=$(escape_sed "$config_name")
    local escaped_value=$(escape_sed "$config_value")
    
    # 查找配置项(忽略等号周围空格)
    local existing_line=$(grep -E "^[[:space:]]*$escaped_name[[:space:]]*=[[:space:]]*" "$target_file")
    
    if [ -n "$existing_line" ]; then
        # 提取当前配置项的值部分(考虑等号周围的空格)
        current_value=$(echo "$existing_line" | sed -E "s/^[[:space:]]*$escaped_name[[:space:]]*=[[:space:]]*//")
        
        # 如果当前值和要设置的值不同,才进行替换
        if [ "$current_value" != ",$escaped_value,,,,,," ]; then
            # 使用更灵活的正则表达式匹配(忽略等号周围空格)
            sed -i.bak -E "s/^([[:space:]]*$escaped_name[[:space:]]*=[[:space:]]*).*/\1,$escaped_value,,,,,,,/" "$target_file"
            echo "✓ 已更新: $config_name=,$escaped_value"
        else
            echo "配置项 $config_name 值未改变,无需更新"
        fi
    else
        echo "⚠️ 配置项 $config_name 不存在,跳过修改"
    fi
}

4、Shell脚本实践

4.1、shell脚本全文

#!/bin/bash# 检查模式参数
if [ $# -lt 5 ]; thenecho "错误: 需要指定操作模式和4个参数"echo "用法: $0 en|de <A> <B> <C> <D>"exit 1
fiMODE="$1"
paramA="$2"
paramB="$3"
paramC="$4"
paramD="$5"# 定义目录和文件路径
so_file_dir="/opt/casb/xxx/lib"
source_dir="/opt"
target_dir="/opt/AOEClient/client/decryption"
source_file="$source_dir/user.properties"
target_file="$target_dir/user.properties"
users_csv_file="$target_dir/users.csv"# 处理.so文件
cd "$so_file_dir" || { echo "错误: 无法进入目录 $so_file_dir"; exit 1; }
if [ -e "libCSCipherJNI-release-2.3.8.so" ]; thenecho "目标.so文件已存在"
elseso_files=(libCSCipherJNI-release-*.so)if [ -e "${so_files[0]}" ]; thenmv "${so_files[0]}" libCSCipherJNI-release-2.3.8.soecho "已重命名.so文件"elseecho "错误: 未找到匹配的.so文件"; exit 1fi
fi# 检查目标目录是否存在
if [ ! -d "$target_dir" ]; thenecho "错误: 目标目录 $target_dir 不存在"; exit 1
fi# 复制配置文件
if [ -e "$source_file" ]; thencp "$source_file" "$target_file"echo "已复制配置文件"
elseecho "错误: 源配置文件不存在"; exit 1
fi# 替换配置项
cp "$target_file" "${target_file}.bak"# 安全转义字符串中的特殊字符
escape_sed() {echo "$1" | sed -e 's/[\/&]/\\&/g'
}# 替换函数(带逗号后缀)
replace_property_comma() {local config_name="$1"local config_value="$2"local escaped_name=$(escape_sed "$config_name")local escaped_value=$(escape_sed "$config_value")# 查找配置项(忽略等号周围空格)local existing_line=$(grep -E "^[[:space:]]*$escaped_name[[:space:]]*=[[:space:]]*" "$target_file")if [ -n "$existing_line" ]; then# 提取当前配置项的值部分(考虑等号周围的空格)current_value=$(echo "$existing_line" | sed -E "s/^[[:space:]]*$escaped_name[[:space:]]*=[[:space:]]*//")# 如果当前值和要设置的值不同,才进行替换if [ "$current_value" != ",$escaped_value,,,,,," ]; then# 使用更灵活的正则表达式匹配(忽略等号周围空格)sed -i.bak -E "s/^([[:space:]]*$escaped_name[[:space:]]*=[[:space:]]*).*/\1,$escaped_value,,,,,,,/" "$target_file"echo "✓ 已更新: $config_name=,$escaped_value"elseecho "配置项 $config_name 值未改变,无需更新"fielseecho "⚠️ 配置项 $config_name 不存在,跳过修改"fi
}# 替换函数(直接为值,不带逗号)
replace_property_value() {local config_name="$1"local config_value="$2"local escaped_name=$(escape_sed "$config_name")local escaped_value=$(escape_sed "$config_value")# 查找配置项(忽略等号周围空格)local existing_line=$(grep -E "^[[:space:]]*$escaped_name[[:space:]]*=[[:space:]]*" "$target_file")if [ -n "$existing_line" ]; then# 提取当前配置项的值部分(考虑等号周围的空格)current_value=$(echo "$existing_line" | sed -E "s/^[[:space:]]*$escaped_name[[:space:]]*=[[:space:]]*//")# 如果当前值和要设置的值不同,才进行替换if [ "$current_value" != "$escaped_value" ]; then# 使用更灵活的正则表达式匹配(忽略等号周围空格)sed -i.bak -E "s/^([[:space:]]*$escaped_name[[:space:]]*=[[:space:]]*).*/\1$escaped_value/" "$target_file"echo "✓ 已更新: $config_name=$escaped_value"elseecho "配置项 $config_name 值未改变,无需更新"fielseecho "⚠️ 配置项 $config_name 不存在,跳过修改"fi
}# 根据模式执行不同配置
case "$MODE" inen)echo "==== 配置加密模式 ===="# 设置加密参数(前4个带逗号,后2个不带)replace_property_comma "export.columns.keyId" "$paramA"replace_property_comma "export.columns.metadata" "$paramB"replace_property_comma "export.columns.algorithm" "$paramC"replace_property_comma "export.columns.iv" "$paramD"replace_property_value "EN_DE_CRYPT_MODE" "0"replace_property_value "RENAME_SUFFIX" "plain.csv"ACTION="加密";;de)echo "==== 配置解密模式 ===="# 设置解密参数(前4个带逗号,后2个不带)replace_property_comma "export.columns.keyId" "$paramA"replace_property_comma "export.columns.metadata" "$paramB"replace_property_comma "export.columns.algorithm" "$paramC"replace_property_comma "export.columns.iv" "$paramD"replace_property_value "EN_DE_CRYPT_MODE" "1"replace_property_value "RENAME_SUFFIX" "cipher.csv"ACTION="解密";;*)echo "错误: 未知模式 '$MODE' (支持: en=加密, de=解密)"exit 1;;
esac# 执行 Java 程序
echo "==== 开始执行$ACTION ===="
cd "$target_dir" || { echo "错误: 无法进入目录 $target_dir"; exit 1; }
if [ -e "$users_csv_file" ]; thenjava -jar decryption*.jar user.properties users.csv
elseecho "错误: 数据文件 $users_csv_file 不存在"; exit 1
fiecho "==== $ACTION操作已完成 ===="

4.2、执行结果

sh test.sh en 1920678415246057474 dff2ea4e046ee585e9d3297e590c1062 SM4_GCM fbd570b56d929666f51f3e0791caf2cd


文章转载自:

http://Ye5lQMIJ.tfqfm.cn
http://KVwkPB6B.tfqfm.cn
http://EjCcB4q2.tfqfm.cn
http://UOTf7mEX.tfqfm.cn
http://oE7L0EsP.tfqfm.cn
http://ShyTaInc.tfqfm.cn
http://DYZUJeEQ.tfqfm.cn
http://RmAMLTVg.tfqfm.cn
http://wOgccSwx.tfqfm.cn
http://HOzuX5eu.tfqfm.cn
http://KiRe8EN8.tfqfm.cn
http://voE5vI40.tfqfm.cn
http://b3MsSPCC.tfqfm.cn
http://pB2KyKIB.tfqfm.cn
http://NHMmvfig.tfqfm.cn
http://hU3XQyxR.tfqfm.cn
http://RO6EnlTJ.tfqfm.cn
http://w0oUuLaY.tfqfm.cn
http://oio9wiP5.tfqfm.cn
http://XIFnMCmF.tfqfm.cn
http://UxIrjyJN.tfqfm.cn
http://3UNTkXil.tfqfm.cn
http://CGic2U7i.tfqfm.cn
http://ZayZfYM7.tfqfm.cn
http://gA8K7pbj.tfqfm.cn
http://v4yXswxn.tfqfm.cn
http://c87snmTt.tfqfm.cn
http://naPsGBVu.tfqfm.cn
http://sQPWGKrI.tfqfm.cn
http://9CtHsN7b.tfqfm.cn
http://www.dtcms.com/wzjs/709316.html

相关文章:

  • 个人网站如何在工信部备案百度显示网站名
  • 网站如何申请域名做网站去哪个公司
  • 做视频网站源码第五冶金建设公司职工大学网站
  • 商城网站建设报价单wordpress 教育
  • 北京住建网站深圳微网站建设公司哪家好
  • 网站建设违约合同拼团小程序制作平台
  • flash翻页效果网站模板seo实战培训seo8
  • 企业网站开发培训网站首页点击中文英文链接 翻译成对应的语言 怎么做
  • 个人接网站开发的平台网站建设主体是什么
  • 怎么叫人做网站株洲市住房和城乡建设局门户网站
  • 网站建设 配资在线平面设计图
  • 网站怎么做成小程序wordpress reset
  • 门户网站系统程序高校思政专题网站建设
  • 网站开发大数据库义乌前十跨境电商公司
  • 向自己做网站wordpress技术博客模板下载
  • 做网站用哪个服务器不用备案阜宁哪家专业做网站
  • 如何做酒店网站设计闵行网站建设
  • 做擦边球的网站wp标题 wordpress
  • 优秀个人网站图片成都网站开发 优帮云
  • 网站做好了后怎么办济南招考院网站
  • 网站栏目功能wordpress 本地视频插件
  • 株洲58同城网站建设电话在线制作生成器
  • 织梦网站图片修改南和网站建设
  • 一个vps主机放两个网站 速度做网站的时候怎么把图片往左移
  • 成品网站货源1688免费o2o网站建设技术
  • 南通网站制作公司哪家好国美网站建设的目的
  • 做网站之前需要准备什么条件保定制作网站软件
  • 平台网站建设哪家有凡科送审平台官网
  • 设计感强的网站永久免费的网站软件
  • 郑州建网站的好处免费拓客软件