加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – 使用awk提取密钥的BASH脚本

发布时间:2020-12-13 23:50:54 所属栏目:Linux 来源:网络整理
导读:我正在创建dkim private公钥 openssl genrsa -out dkim1024.key 1024 openssl rsa -in dkim1024.key -out dkim1024.pub -pubout -outform PEM 我有一个使用awk提取密钥文件的bash脚本 KEY = /usr/bin/awk’NR 1 {a [k] = $0} END {for(i = 1; i k; i)print a
我正在创建dkim private&公钥
openssl genrsa -out dkim1024.key 1024
openssl rsa -in dkim1024.key -out dkim1024.pub -pubout -outform PEM

我有一个使用awk提取密钥文件的bash脚本
KEY = /usr/bin/awk’NR> 1 {a [k] = $0} END {for(i = 1; i< k; i)print a [i]}'file.key file.key内容

-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqasdfadaBAQUAA4GNADCBiQKBsdfadsfsDgrKE5D2atbGtaqVmAZwzy1YNY
8pUYgF6qQ4zecRrpk3Uam52asdfafasdasdfasgwYAA0x3roKIYAeHFFrFm9aCS
WKpM+na/03akmpewn4cjT4sm9qTHP0q/VM/YtHy3rGkPj+xzOKgO9rzyZo3E1a1O
HYu6TIqqzlqtadfafafafdas
-----END PUBLIC KEY-----

我需要删除这些行.
—–开始公钥—–
—– END PUBLIC KEY —–
我在我的awk cmd中完成了这个,但当我回显$KEY时有空格.我猜这些是返回字符,但我不知道如何摆脱它们但保留密钥.

sh-3.2# echo $KEY
MIGfMA0GCSqasdfadaBAQUAA4GNADCBiQKBsdfadsfsDgrKE5D2atbGtaqVmAZwzy1YNY 8pUYgF6qQ4zecRrpk3Uam52asdfafasdasdfasgwYAA0x3roKIYAeHFFrFm9aCS WKpM+na/03akmpewn4cjT4sm9qTHP0q/VM/YtHy3rGkPj+xzOKgO9rzyZo3E1a1O HYu6TIqqzlqtadfafafafdas

谢谢

解决方法

由于 word splitting,你得到的是空格而不是行.你应该用双引号引用你的变量

echo "$KEY"

这也可以是一种替代解决方案:

awk '/-END PUBLIC KEY-/ { p = 0 }; p; /-BEGIN PUBLIC KEY-/ { p = 1 }' file.key

输出:

MIGfMA0GCSqasdfadaBAQUAA4GNADCBiQKBsdfadsfsDgrKE5D2atbGtaqVmAZwzy1YNY
8pUYgF6qQ4zecRrpk3Uam52asdfafasdasdfasgwYAA0x3roKIYAeHFFrFm9aCS
WKpM+na/03akmpewn4cjT4sm9qTHP0q/VM/YtHy3rGkPj+xzOKgO9rzyZo3E1a1O
HYu6TIqqzlqtadfafafafdas

即使在块之前或之后存在其他行,该解决方案也将起作用.

您也可以使用Bash本身来完成:

#!/bin/bash

FILE='file.key'  ## Or FILE=$1

KEY=()
while IFS=$' trn' read -r LINE; do
    [[ $LINE == *'-END PUBLIC KEY-'* ]] && P=0
    (( P )) && KEY+=("$LINE")  ## Store every line as an array element.
    [[ $LINE == *'-BEGIN PUBLIC KEY-'* ]] && P=1
done < "$FILE"

echo --------------------

printf '%sn' "${KEY[@]}"

echo --------------------

IFS= eval 'MERGED_KEY="${KEY[*]}"'  ## Merge key without spaces.

echo "$MERGED_KEY"

输出:

--------------------
MIGfMA0GCSqasdfadaBAQUAA4GNADCBiQKBsdfadsfsDgrKE5D2atbGtaqVmAZwzy1YNY
8pUYgF6qQ4zecRrpk3Uam52asdfafasdasdfasgwYAA0x3roKIYAeHFFrFm9aCS
WKpM+na/03akmpewn4cjT4sm9qTHP0q/VM/YtHy3rGkPj+xzOKgO9rzyZo3E1a1O
HYu6TIqqzlqtadfafafafdas
--------------------
MIGfMA0GCSqasdfadaBAQUAA4GNADCBiQKBsdfadsfsDgrKE5D2atbGtaqVmAZwzy1YNY8pUYgF6qQ4zecRrpk3Uam52asdfafasdasdfasgwYAA0x3roKIYAeHFFrFm9aCSWKpM+na/03akmpewn4cjT4sm9qTHP0q/VM/YtHy3rGkPj+xzOKgO9rzyZo3E1a1OHYu6TIqqzlqtadfafafafdas

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读