【发布时间】:2011-07-08 20:41:48
【问题描述】:
本应是一个简单的 bash 脚本,结果却变成了怪物。这是第5次尝试。你甚至不想看到尝试 #4 的 30 行怪物.. :)
这是我想要做的:脚本生成一个随机密码,$1=密码长度,$2=输出中出现的特殊字符数量。
或者至少,在发送到标准输出之前验证至少存在 1 个特殊字符。我更喜欢前者,但满足于后者。
这是我非常简单的该脚本的第 5 版。它没有验证,或者 $2:
#!/bin/bash
cat /dev/urandom | tr -dc [=!=][=@=][=#=][=$=][=%=][=^=][:alnum:] | head -c $1
这很好用,而且它是一个足够安全的密码:
$ passgen 12
2ZuQacN9M@6!
但是,当然,它并不总是打印特殊字符,现在让我能够选择输出中存在多少特殊字符已成为一种痴迷。这并不像我想象的那么容易。
有意义吗?
顺便说一句,我不介意对代码进行彻底的返工,我很想看到一些创造性的解决方案!
(顺便说一句:我尝试以各种方式将其通过管道传输到 egrep/grep 中,但无济于事,但我觉得这是一个可能的解决方案......)
谢谢 凯文
【问题讨论】:
-
看在上帝的份上……使用真正的编程语言来完成编程任务。
-
原来的目标,在这变成怪物之前,是用 bash 写,然后用 ruby 写,每个脚本运行 100 次,平均运行每个脚本所需的时间并比较.我喜欢真正的编程语言,但我喜欢 bash 的挑战
-
另外,有时 bash 最适合这项工作。它又快又脏,而且可靠,也就是说 - 如果你知道你在做什么,我显然不知道:)
-
我真的希望我可以降级@Kim Stebel 评论。就像有人说,嘿,我该如何更换 82 福特野马的变速箱,有人说,“买一辆新车,笨蛋” 是的,非常有帮助,谢谢
-
除了使用不同的编程语言不花钱而且节省大量时间
标签: bash random passwords grep tr