【问题标题】:Prevent pwgen -y generating backticks or quotes? (or otherwise sanitize output)防止 pwgen -y 生成反引号或引号? (或以其他方式清理输出)
【发布时间】:2017-11-16 17:13:08
【问题描述】:

我在 bash 脚本中使用 pwgen。为了安全起见,我们必须使用-y 标志来包含至少一个特殊字符。但是,这经常会返回带有一个或多个 ` 或 " 的密码,这会破坏周围的脚本。

我可以阻止生成这些字符吗?如果不能,删除、替换或以其他方式清理 pwgen 的输出以排除这些字符的最干净的方法是什么?

我当前的 pwgen 是;

intPW=$(pwgen -c -n -y -B -1 15)

这意味着 intPW 的值可能类似于;

iqui`c:ee4so4Ch
hph7eew"ohr9Ee

我需要保证每个密码中都有一个符号,而不是有问题的符号之一。

我在替换方面能想到的任何东西,从 if 循环到 sed,都会因为我试图定位反引号而中断。

【问题讨论】:

    标签: bash passwords


    【解决方案1】:

    如果您有pwgen 2.08 版,您可以使用新选项-r 排除不需要的字符

    pwgen -cnyB1 -r \`\" 15
    

    【讨论】:

    • 多么干净的选择。谢谢!
    【解决方案2】:

    假设您也不需要保护单引号字符,以下应该可以:

    intPW=$(pwgen -c -n -y -B -1 15 | tr '`"' '$@')
    

    这会将 ` 转换为 $ 并将 " 转换为 @。随意选择您喜欢的任何其他字符!

    【讨论】:

    • 完全是我的错误,但不幸的是,我似乎从未在我的测试中看到单引号弹出......即使他们这样做了。在大约 40 pwgens 之后,现在才看到一个这样的问题:我可以调整这个解决方案来考虑单引号吗?
    • 是的,原理相同。您只需要 tr 的参数也包含单引号。当我不使用移动设备时,我会编辑答案,所以我不会把它搞砸!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-09
    • 2014-10-20
    • 1970-01-01
    • 1970-01-01
    • 2014-04-11
    • 2014-09-28
    • 1970-01-01
    相关资源
    最近更新 更多