当前位置: 首页 > news >正文

Shell编程-随机密码生成

脚本说明

运行脚本后,系统会显示操作菜单,可根据需要生成指定长度和格式的随机密码。

运行效果

效果一:生成指定长度仅数字的随机密码
在这里插入图片描述
效果二:生成指定长度仅字母(含大小写)的随机密码
在这里插入图片描述
效果三:生成指定长度仅特殊字符的随机密码

在这里插入图片描述
效果四:生成指定长度,但数字、字母、特殊字符随机的密码
在这里插入图片描述
效果五:生成指定位数数字、字母、特殊字符随机的密码
在这里插入图片描述

脚本设计思路

1.生成仅含数字的随机密码
作用:根据输入的密码长度要求,生成随机数字密码

numbers="";
# 生成指定长度的随机数字
function pwForNum() {read -p "请输入密码长度-数字:" length;numbers=$(tr -dc '0-9' < /dev/urandom | fold -w $length | head -n 1)echo $numbers;
}

2.生成仅含字母的随机密码
作用:根据输入的密码长度要求,生成随机字母密码(含大小写)

letters="";
# 生成指定长度的随机字母
function pwForLetter() {read -p "请输入密码长度-字母:" length;letters=$(tr -dc 'a-zA-Z' < /dev/urandom | fold -w $length | head -n 1)echo $letters;
}

3.生成仅含特殊字符的随机密码
作用:根据输入的密码长度要求,生成随机特殊字符密码

special="";
# 生成指定长度的随机特殊字符
function pwForSpecial() {read -p "请输入密码长度-特殊字符:" length;special=$(tr -dc '[:punct:]' < /dev/urandom | fold -w $length | head -n 1)echo $special;
}

4.生成指定位数的随机密码
作用:根据输入的密码长度要求,生成随机密码(可能含字母、数字、特殊字符)

function pwForAll() {read -p "请输入随机密码长度:" length;password=$(tr -dc 'a-zA-Z0-9[:punct:]' < /dev/urandom | fold -w $length | head -n 1)echo $password
}

5.生成指定位数数字、字母、特殊字符的秘密
作用:根据用户指定的数字、字母和特殊字符位数要求生成密码,并对生成的密码进行随机排序后输出。

# 生成指定位数随机密码(含大小写、数字、特殊字符-数量固定)
function pwForAllFixed() {pwForNum;pwForLetter;pwForSpecial;password="${numbers}${letters}${special}"echo $password;password=$(echo "$password" | fold -w1 | shuf | tr -d '\n')echo "生成的随机密码是: $password"
}

6.主函数
作用:用户交互及操作指引

function menu(){echo "1.生成仅数字的密码";echo "2.生成仅字母的密码";echo "3.生成仅特殊字符的密码";echo "4.生成数字、字母、特殊字符的密码(数量随机)";echo "5.生成数字、字母、特殊字符的密码(数量固定)";echo "6.退出";read -p "请输入你的选择:" num;case $num in1 ) pwForNum;;2 ) pwForLetter;;3 ) pwForSpecial;;4 ) pwForAll;;5 ) pwForAllFixed;;6 | * ) exit;;esac
}menu;

脚本完整代码

#!/bin/bashnumbers="";
# 生成指定长度的随机数字
function pwForNum() {read -p "请输入密码长度-数字:" length;numbers=$(tr -dc '0-9' < /dev/urandom | fold -w $length | head -n 1)echo $numbers;
}letters="";
# 生成指定长度的随机字母
function pwForLetter() {read -p "请输入密码长度-字母:" length;letters=$(tr -dc 'a-zA-Z' < /dev/urandom | fold -w $length | head -n 1)echo $letters;
}special="";
# 生成指定长度的随机特殊字符
function pwForSpecial() {read -p "请输入密码长度-特殊字符:" length;special=$(tr -dc '[:punct:]' < /dev/urandom | fold -w $length | head -n 1)echo $special;
}# 生成指定位数随机密码(含大小写、数字、特殊字符-数量随机)
function pwForAll() {read -p "请输入随机密码长度:" length;password=$(tr -dc 'a-zA-Z0-9[:punct:]' < /dev/urandom | fold -w $length | head -n 1)echo $password
}# 生成指定位数随机密码(含大小写、数字、特殊字符-数量固定)
function pwForAllFixed() {pwForNum;pwForLetter;pwForSpecial;password="${numbers}${letters}${special}"echo $password;password=$(echo "$password" | fold -w1 | shuf | tr -d '\n')echo "生成的随机密码是: $password"
}function menu(){echo "1.生成仅数字的密码";echo "2.生成仅字母的密码";echo "3.生成仅特殊字符的密码";echo "4.生成数字、字母、特殊字符的密码(数量随机)";echo "5.生成数字、字母、特殊字符的密码(数量固定)";echo "6.退出";read -p "请输入你的选择:" num;case $num in1 ) pwForNum;;2 ) pwForLetter;;3 ) pwForSpecial;;4 ) pwForAll;;5 ) pwForAllFixed;;6 | * ) exit;;esac
}menu;
http://www.dtcms.com/a/353846.html

相关文章:

  • volitale伪共享问题及解决方案
  • SoC如何实现线程安全?
  • 【进阶篇第五弹】《详解存储过程》从0掌握MySQL中的存储过程以及存储函数
  • TypeScript:Interface接口
  • 如何启动一个分支网络改造试点?三步走
  • 【链表 - LeetCode】25. K 个一组翻转链表
  • 干眼症护理学注意事项
  • linux下的网络编程(2)
  • 技术分析 | Parasoft C/C++test如何突破单元测试的隔离难题
  • 亚马逊关键词策略全解析:类型、工具与多账号运营优化指南
  • AT_abc406_f [ABC406F] Compare Tree Weights
  • Windows/Linux 环境下 Jmeter 性能测试的安装与使用
  • 基于SpringBoot的宠物领养服务系统【2026最新】
  • MySQL 面试题系列(五)
  • Unity自定义Inspector面板之使用多选框模拟单选框
  • 前端技术演进录:从 AI 革命到架构新生
  • 【Linux】常用命令 拥有者和权限(四)
  • Python随机选择完全指南:从基础到高级工程实践
  • 安全向量模板类SiVector
  • vue 前端 区域自适应大小
  • AWS申请增加弹性IP配额流程
  • 《Vuejs设计与实现》第 17 章(编译优化)
  • 机器视觉学习-day05-图片颜色识别及颜色替换
  • # 快递单号查询系统:一个现代化的物流跟踪解决方案
  • YOLO12n-Deepsort多目标跟踪之昆虫数据集
  • 【C++标准库】<ios>详解基于流的 I/O
  • 科技赋能生态,智慧守护农林,汇岭生态开启农林产业现代化新篇章
  • C# OpenCVSharp 实现物体尺寸测量方案
  • Whisper JAX:突破性实时语音识别加速框架,性能提升70倍的开源解决方案
  • Spring : IOC / DI (控制反转 / 依赖注入)