没有合适的资源?快使用搜索试试~ 我知道了~
详解Linux Shell 实现一个获取任意位数的随机密码的脚本
0 下载量 173 浏览量
2021-01-20
16:30:24
上传
评论
收藏 59KB PDF 举报
温馨提示
试读
2页
Shell 命令行,实现一个获取任意位数的随机密码的脚本 每次我们想要获得一个密码的时候都很头疼,于是我之前自己用nodejs写了一个 Shell 脚本。这两天在学习 bash Shell 所以,想用同样的逻辑实现一个获取任意位数随机密码的脚本。 我成功了 :slightly_smiling_face: 分析问题 我们假设我们需要的密码是大小写字母以及数字的组合,并且剔除掉 1,l,0,O,o 这些不便于认知的字符。 然后随机的读取其中的字符,组合成一个我们需要的密码,最后输出。 理顺了逻辑之后,我想到有下面的知识点是我之前不是很熟悉的。不过没关系,善用搜索引擎,这些问题都能解决 任意位数,所以需要接受传参 如果没有传参,则要给
资源详情
资源评论
资源推荐
详解详解Linux Shell 实现一个获取任意位数的随机密码的脚本实现一个获取任意位数的随机密码的脚本
Shell 命令行,实现一个获取任意位数的随机密码的脚本命令行,实现一个获取任意位数的随机密码的脚本
每次我们想要获得一个密码的时候都很头疼,于是我之前自己用nodejs写了一个 Shell 脚本。这两天在学习 bash Shell 所以,
想用同样的逻辑实现一个获取任意位数随机密码的脚本。
我成功了
分析问题分析问题
我们假设我们需要的密码是大小写字母以及数字的组合,并且剔除掉 1,l,0,O,o 这些不便于认知的字符。
然后随机的读取其中的字符,组合成一个我们需要的密码,最后输出。
理顺了逻辑之后,我想到有下面的知识点是我之前不是很熟悉的。不过没关系,善用搜索引擎,这些问题都能解决
任意位数,所以需要接受传参
如果没有传参,则要给一个默认值
需要实现随机数效果
字符串追加,这个倒是蛮简单的
获取字符串中指定位数的字符
数字向上取整
实现代码实现代码
最终代码如下:
#!/bin/bash
# 如果得到参数 则将得到的参数作为密码的位数,否则指定密码位数为8
if [ -n "$1" ]; then length=$1;
else length=8; fi
# 设定可以作为密码的字符串
chars='abcdefghijkmnpqrstuvwxyzABCDEFGHJKMNPQRSTUVWXYZ23456789'
# 获取上面的字符串的长度,其实可以直接数一下,这不是练一下 shell 嘛
charsLength=`echo $chars | wc -m | sed 's/^[ ]*//g'`
# 初始的为空
pw=''
# 根据所需密码长度进行循环
for ((i=0;i<$length;i++));do
# 取得一个随机数
# $RANDOM 是获取一个小于 32767 的随机数
# 所以除以 32767 就可以得到一个 0 - 1 之间的随机小数
r=`echo $RANDOM/32767 | bc -l`
# 根据随机数*字符长度取得一个数字
num=`echo $r*$charsLength | bc`
# 将取得数字向上取整,并在字符串中截取对应位置的字符
w=`echo $chars | cut -c$((${num//.*/+1}))`
# 字符追加到 pw 这个变量
pw=$pw$w
done
# 输出我们想要的密码
echo $pw
运行一下,果然得到了我们想要的结果。
将这个命令作为一个系统命令,可以随时执行将这个命令作为一个系统命令,可以随时执行
我们在 ~目录下面新建一个 .bin 的文件夹
将 ~/.bin 设置为环境变量
然后将此脚本放到改文件夹下面,并命名为 getpass
chmod +x getpass 添加可执行权限
weixin_38614417
- 粉丝: 5
- 资源: 915
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0