我有一个脚本可以通过SSH密钥和Linux系统上的OTP启用OTP / Google Auth。启用OTP后,我会向用户发送带有otpauth URL的短信。我需要从otpauth URL中提取(通常是16位数字的密钥)。
如果他们想要可见的QR码,则URL的示例如下:
https://www.google.com/chart?chs=200x200&chld=M|0&cht=qr&chl=otpauth://totp/user@host.com%3Fsecret%3DWFHGHUFAUYXZFA44%26issuer%3DCOMPANY
如果他们想要一个otpauth网址,他们可以点击导入令牌/密码管理器,我使用以下内容:
otpauth://totp/user@host.com%3Fsecret%3DWFHGHUFAUYXZFA44%26issuer%3DCOMPANY
如何从URL中提取密钥?
答案 0 :(得分:1)
使用grep -oP
:
url='https://www.google.com/chart?chs=200x200&chld=M|0&cht=qr&chl=otpauth://totp/user@host.com%3Fsecret%3DWFHGHUFAUYXZFA44%26issuer%3DCOMPANY'
grep -ioP '[?&]chl=.+?%3Fsecret%3D\K[^%]+' <<< "$url"
WFHGHUFAUYXZFA44
答案 1 :(得分:1)
secret%3D(.*?)(?=%|$)
会找到'秘密',%3D
,然后是数字,直到它到达行尾或另一个%
字符。