详解Linux Shell 实现一个获取任意位数的随机密码的脚本
发布时间 - 2026-01-11 02:37:24 点击率:次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/^[ \t]*//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 添加可执行权限
然后我们就可以随时输出这个命令,来得到我们想要的密码了。
将 ~/.bin 设置为环境变量
cd ~ mkdir .bin vim .bash_profile
在 .bash_profile 文件中添加
export PATH="$PATH:~/.bin"
其他不说了,学习 shell 的话,一些基本的命令应该是没有问题的。
以上脚本均在 mac 下测试通过,在 Linux 下可能会有稍许不同。
如有疑问请留言,或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
# Linux
# Shell
# 随机密码
# 随机密码的实现
# Shell创建用户并生成随机密码脚本分享
# PowerShell生成随机密码的方法
# Shell脚本生成随机密码的若干种可能
# 随机数
# 设置为
# 就可以
# 会有
# 如有
# 都能
# 并在
# 所需
# 希望能
# 这不是
# 都很
# 如果没有
# 可以直接
# 写了
# 作为一个
# 将此
# 谢谢大家
# 这两天
# 想用
# 命名为
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?
胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?
Laravel怎么实现验证码功能_Laravel集成验证码库防止机器人注册
七夕网站制作视频,七夕大促活动怎么报名?
PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)
韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南
详解CentOS6.5 安装 MySQL5.1.71的方法
Laravel如何安装使用Debugbar工具栏_Laravel性能调试与SQL监控插件【步骤】
Mybatis 中的insertOrUpdate操作
Laravel如何实现全文搜索功能?(Scout和Algolia示例)
高防服务器租用如何选择配置与防御等级?
微信小程序制作网站有哪些,微信小程序需要做网站吗?
Python文件异常处理策略_健壮性说明【指导】
如何在HTML表单中获取用户输入并用JavaScript动态控制复利计算循环
html5如何实现懒加载图片_ intersectionobserver api用法【教程】
移动端脚本框架Hammer.js
网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?
如何快速使用云服务器搭建个人网站?
Laravel观察者模式如何使用_Laravel Model Observer配置
Laravel路由怎么定义_Laravel核心路由系统完全入门指南
Android自定义控件实现温度旋转按钮效果
Laravel中的withCount方法怎么高效统计关联模型数量
如何在IIS管理器中快速创建并配置网站?
Laravel怎么配置S3云存储驱动_Laravel集成阿里云OSS或AWS S3存储桶【教程】
如何在香港服务器上快速搭建免备案网站?
如何为不同团队 ID 动态生成多个独立按钮
如何使用 jQuery 正确渲染 Instagram 风格的标签列表
Laravel怎么生成二维码图片_Laravel集成Simple-QrCode扩展包与参数设置【实战】
如何在新浪SAE免费搭建个人博客?
怎么用AI帮你设计一套个性化的手机App图标?
Windows驱动无法加载错误解决方法_驱动签名验证失败处理步骤
LinuxCD持续部署教程_自动发布与回滚机制
laravel怎么为API路由添加签名中间件保护_laravel API路由签名中间件保护方法
Laravel怎么在Controller之外的地方验证数据
实现点击下箭头变上箭头来回切换的两种方法【推荐】
JS碰撞运动实现方法详解
Laravel如何生成URL和重定向?(路由助手函数)
HTML透明颜色代码怎么让图片透明_给img元素加透明色的技巧【方法】
如何在景安云服务器上绑定域名并配置虚拟主机?
Laravel如何编写单元测试和功能测试?(PHPUnit示例)
如何在云服务器上快速搭建个人网站?
详解jQuery停止动画——stop()方法的使用
深入理解Android中的xmlns:tools属性
西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?
大学网站设计制作软件有哪些,如何将网站制作成自己app?
Google浏览器为什么这么卡 Google浏览器提速优化设置步骤【方法】
html5audio标签播放结束怎么触发事件_onended回调方法【教程】
HTML透明颜色代码在Angular里怎么设置_Angular透明颜色使用指南【详解】
手机网站制作与建设方案,手机网站如何建设?
网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?

