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

手机网站建设网站wordpress 后台登陆 修改

手机网站建设网站,wordpress 后台登陆 修改,网站编辑适不适合男生做,美食网站开发的原则目录一. 需求二. 脚本实现三. 脚本重点语法解析一. 需求 ⏹现场有一个项目中使用了keystore证明书,现要求每年都需要生成一个新的keystore文件,并且根据keystore文件中的私钥生成公钥,然后将公钥提供给其他项目使用。 生成keystore文件的命…

目录

  • 一. 需求
  • 二. 脚本实现
  • 三. 脚本重点语法解析


一. 需求

⏹现场有一个项目中使用了keystore证明书,现要求每年都需要生成一个新的keystore文件,并且根据keystore文件中的私钥生成公钥,然后将公钥提供给其他项目使用。

  • 生成keystore文件的命令很长,手动通过命令行输入不仅繁琐,而且很容易出错,因此要求写一个脚本实现
  • 要求使用Bash脚本书写,书写完毕之后,如果在windows上安装了Git for Bash的话,还可以在直接在windows上执行。

二. 脚本实现

#!/usr/bin/env bash# 判断keytool命令是否被安装
if ! command -v keytool >/dev/null 2>&1; thenecho "【keytool】命令并没有被安装, 请确认!"exit 1
fi# 判断openssl命令是否被安装
if ! command -v openssl >/dev/null 2>&1; thenecho "【openssl】命令并没有被安装, 请确认!"exit 1
fi# 获取当前脚本的绝对路径
SCRIPT_PATH="$(readlink -f "${BASH_SOURCE[0]}")"
# 根据脚本的绝对路径获取脚本所在目录的绝对路径
SCRIPT_DIR="$(dirname "$SCRIPT_PATH")"# 私钥别名
ALIAS='alias'
# 密码
PASSWD='nosecret'
# 不带后缀的文件名
FILE_NAME='test_mpl_ws_api'
# pem公钥所对应的key名称
PEM_PUBLIC_KEY='PEM_PUBLIC_KEY_PATH'
# 组织信息
DNAME_INFO='CN=KDDI, OU=IT, O=MyCompany, L=Tokyo, ST=Tokyo, C=JP'# 创建一个关联数组, 关联数组中的key和value都可以使用变量
declare -A filePathMap=(# keystore文件的绝对路径[KEYSTORE_FILE_PATH]="$SCRIPT_DIR/${FILE_NAME}.keystore"# cer公钥文件的所在路径[CER_PUBLIC_KEY_PATH]="$SCRIPT_DIR/${FILE_NAME}.cer"# pem公钥文件的所在路径["$PEM_PUBLIC_KEY"]="$SCRIPT_DIR/${FILE_NAME}.pem"
)# 进入当前脚本所在的目录
pushd "$SCRIPT_DIR" >/dev/null || exit 1# 生成一个keystore文件
keytool -genkeypair \
-alias "$ALIAS" \
-keyalg RSA \
-sigalg SHA384withRSA \
-keysize 2048 \
-validity 365 \
-keystore "${filePathMap['KEYSTORE_FILE_PATH']}" \
-dname "$DNAME_INFO" \
-storepass "$PASSWD" \
-keypass "$PASSWD"# 根据keystore文件中的私钥生成cer格式的公钥
keytool -exportcert \
-alias "$ALIAS" \
-keystore "${filePathMap['KEYSTORE_FILE_PATH']}" \
-storepass "$PASSWD" \
-file "${filePathMap['CER_PUBLIC_KEY_PATH']}"# 通过openssl命令将der格式的公钥转换为pem格式的公钥
openssl x509 \
-inform der \
-in "${filePathMap['CER_PUBLIC_KEY_PATH']}" \
-outform pem \
-out "${filePathMap["$PEM_PUBLIC_KEY"]}"# 定义一个删除文件的函数
function cleanup_files() {local -n pathMap=$1# 遍历引入的mapfor pathKey in "${!pathMap[@]}"; do# local的局部变量只能在函数内部使用local file_path="${pathMap[$pathKey]}"# 如果文件存在的话, 就删除[[ -f "$file_path" ]] && rm -- "$file_path"done
}# 删除生成的文件
sleep 5
# 调用自定义的函数, 传入关联数组, 删除文件
cleanup_files filePathMap# 返回到原目录
popd >/dev/nullread -p "→ 脚本执行结束, 按任意键结束 . . . " -n1 -s

三. 脚本重点语法解析

⏹获取当前脚本绝对路径和脚本所在的文件夹

# 获取当前脚本的绝对路径
SCRIPT_PATH="$(readlink -f "${BASH_SOURCE[0]}")"
# 根据脚本的绝对路径获取脚本所在目录的绝对路径
SCRIPT_DIR="$(dirname "$SCRIPT_PATH")"

⏹Bash中虽然没有Map,但是Bash中的关联数组的特性和map类似

declare -A filePathMap=(# keystore文件的绝对路径[KEYSTORE_FILE_PATH]="$SCRIPT_DIR/${FILE_NAME}.keystore"# cer公钥文件的所在路径[CER_PUBLIC_KEY_PATH]="$SCRIPT_DIR/${FILE_NAME}.cer"# pem公钥文件的所在路径["$PEM_PUBLIC_KEY"]="$SCRIPT_DIR/${FILE_NAME}.pem"
)

⏹调用函数,传递关联数组

  • Bash 没法直接传关联数组,但你可以把数组名传进去,用 declare -n(Bash 4.3+)引用,Bash 4.3之前的旧版本的Bash并不支持。
  • -n 表示 nameref 引用。函数内部用 local -n pathMap=$1,引用只是局部的别名,原数组本身在外部仍然存在,不会意外覆盖或污染全局变量。
  • 函数结束后,局部变量的pathMap作用域消失,不影响其他变量。
function cleanup_files() {local -n pathMap=$1# 遍历引入的mapfor pathKey in "${!pathMap[@]}"; do# local的局部变量只能在函数内部使用local file_path="${pathMap[$pathKey]}"# 如果文件存在的话, 就删除[[ -f "$file_path" ]] && rm -- "$file_path"done
}# 调用自定义的函数, 传入关联数组, 删除文件
cleanup_files filePathMap
http://www.dtcms.com/a/462545.html

相关文章:

  • 做网站分什么软件wordpress epanel
  • 微信生活门户网站源码局网站建设申请
  • 做的网站没流量吗什么叫门户类网站
  • 互动网站如何做h5邀请函制作软件app
  • ImageNet数据集
  • 做传销网站后果严重吗个人公司如何注册
  • 火箭升空检测识别数据集:近3w图像,3类,yolo标注
  • 【密码学】对称加密与非对称加密在JS逆向与爆破测试中的应用
  • Qt 自定义无标题栏窗口:FramelessWidget 实现与解析
  • 海林建设局网站济南百度推广排名优化
  • 扩充ec2硬盘对应的lvm
  • 哪些公司的网站做的漂亮上海优化排名推广
  • 做素材类的网站赚钱吗改进网站建设
  • 中山好的网站建设西安公关公司
  • 网页网站的制作过程dedecms建设慕课网站
  • K8S(二)—— K8S 1.28 集群部署指南(kubeadm 方式)
  • Eclipse Mosquitto 在小内存下怎么修改配置文件
  • 猫眼浏览器(Chrome内核增强版浏览器)官方便携版
  • 福建省住房和建设厅网站合同 制作 网站
  • 构建可信数据体系——解读数据治理指南-构建可信数据路线图【附全文阅读】
  • qemu调试edk2
  • 正规网站做菠菜广告焦作网站建设哪家正规
  • 有什么网站可以发布个人信息网站优化计划书
  • 小程序停车场名称动态化实现方案
  • 张家港建设工程质量监督站网站中国廉政文化建设网站
  • sunshine :Moonlight 的自托管游戏串流服务端
  • 防爆手机与普通手机的区别!
  • 铁路建设标准网站专业网站建
  • 免费建网站可信吗wordpress 仪表盘界面
  • SQL Server 限制IP访问数据库的设置方法及注意事项