首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用证书替换脚本变量的Sed

用证书替换脚本变量的Sed
EN

Stack Overflow用户
提问于 2021-10-26 13:08:52
回答 2查看 367关注 0票数 0

我想用公共和私有证书替换脚本模板中的变量。

例如,我使用以下命令生成了一个harbor.crt公共证书和一个harbor.key私钥:

代码语言:javascript
复制
sudo openssl req -x509 -newkey rsa:4096 -sha256 -days 3650 -nodes -keyout /data/harbor.key -out /data/harbor.crt -subj "/CN=$LOCAL_IP" -addext "subjectAltName=IP:127.0.0.1,IP:$LOCAL_IP"

在模板脚本中,我想用上面的文件替换以下变量:

代码语言:javascript
复制
CFG_HARBOR_CRT="CRT"                    # Harbor registry certificate
CFG_HARBOR_KEY="KEY"                    # Harbor registry key

为了替代这些价值观,我尝试这样做:

代码语言:javascript
复制
HARBOR_CRT=`sudo cat /data/harbor.crt`
HARBOR_KEY=`sudo cat /data/harbor.key`
sudo sed -i "s/CFG_HARBOR_CRT\=\"[^\"]*\"/CFG_HARBOR_CRT\=\"$HARBOR_CRT\"/g" ./template-script.sh
sudo sed -i "s/CFG_HARBOR_KEY\=\"[^\"]*\"/CFG_HARBOR_KEY\=\"$HARBOR_KEY\"/g" ./template-script.sh

但是这两个命令都失败了:sed: -e expression #1, char 70: unterminated的“命令”

有没有一种对未转义变量使用sed命令的方法?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-10-28 13:49:23

退出评论以获得更好的能见度..。

考虑通过base64运行文件并将结果嵌入到脚本中,然后在另一端运行base64 -d来解密数据并存储在目标文件中。

使用base64编码的数据应该消除最多(全部?)处理特殊字符和/或试图查找数据中不存在的sed脚本分隔符时遇到的sed麻烦。

执行部分/马尼托巴省答复意见:

这招成功了。我使用HARBOR_CRT=$(sudo cat /data/harbor.crt | base64 -w 0)将证书转换为B64,并使用echo $CFG_HARBOR_CRT | base64 --decode进行解码。

票数 0
EN

Stack Overflow用户

发布于 2021-10-26 14:06:08

我怀疑这里漏掉了信息。为什么要使用sed呢?

对于简单的情况,只需用文件读取替换标记即可。

代码语言:javascript
复制
CFG_HARBOR_CRT="$(</data/harbor.crt)"
CFG_HARBOR_KEY="$(</data/harbor.key)"

这可能意味着您需要使用更高的priv来运行整个脚本,所以我理解您为什么不想这样做。

...do您需要根用户来读取这些文件吗?

如果是这样,如果不希望整个脚本以root方式运行,则可能如下所示:

代码语言:javascript
复制
$: sed 's,^CFG_HARBOR_CRT="CRT",CFG_HARBOR_CRT="$(sudo cat /data/harbor.crt)",
        s,^CFG_HARBOR_KEY="KEY",CFG_HARBOR_KEY="$(sudo cat /data/harbor.key)",' tmpf
CFG_HARBOR_CRT="$(sudo cat /data/harbor.crt)"                    # Harbor registry certificate
CFG_HARBOR_KEY="$(sudo cat /data/harbor.key)"                    # Harbor registry key

/转换为,可以减少倾斜牙签综合症。

...转换为$(...)可以提高灵活性、稳定性和可读性等。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69723723

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档