我正在尝试在 Linux 命令行上使用 base64 对数据库字符串进行编码。
一旦我这样做,我就会将该值添加到 kubernetes 中的秘密中,但由于数据库字符串不被接受,我的应用程序无法连接到数据库。当我检查镜头中的值时,似乎添加了换行符,而同一秘密中的类似集群中不存在换行符
jdbc:postgresql://test.xxxxxxxx.eu-west-2.rds.amazonaws.com/test
deirdre$ echo jdbc:postgresql://test.xxxxxxxx.eu-west-2.rds.amazonaws.com/test | base64 | tr -d "\n"
amRiYzpwb3N0Z3Jlc3FsOi8vdGVzdC54eHh4eHh4eC5ldS13ZXN0LTIucmRzLmFtYXpvbmF3cy5jb20vdGVzdAo=
Run Code Online (Sandbox Code Playgroud)
我做错了什么吗?或者 / 有问题吗?
小智 18
您可以轻松修复这些问题
echo -n "string" | base64
Run Code Online (Sandbox Code Playgroud)
“echo -n”删除结尾的换行符。
您还可以看到我对以下问题 Kubernetes Secret 作为环境变量添加空格字符给出的最后一个答案
问题在于,base64 添加换行符是为了与具有最大行宽的旧系统兼容。您可以将 -w 0 选项添加到 base64 命令来更改行为,使其不再添加新行。
在你的例子中这将是
echo "jdbc:postgresql://test.xxxxxxxx.eu-west-2.rds.amazonaws.com/test" | base64 -w 0
Run Code Online (Sandbox Code Playgroud)
这导致
amRiYzpwb3N0Z3Jlc3FsOi8vdGVzdC54eHh4eHh4eC5ldS13ZXN0LTIucmRzLmFtYXpvbmF3cy5jb20vdGVzdAo=
Run Code Online (Sandbox Code Playgroud)
编辑:
printf "%s" jdbc:postgresql://test.xxxxxxxx.eu-west-2.rds.amazonaws.com/test | base64 -w 0
Run Code Online (Sandbox Code Playgroud)
产生正确的输出,在 Base64 编码的字符串中添加一个额外的换行符,这显然是 url 被识别为正确结束所必需的
| 归档时间: |
|
| 查看次数: |
22129 次 |
| 最近记录: |