shell随机密码生成脚本

三个可选参数:

-h:显示帮助信息

-l:指定生成的密码长度(默认16-24位随机)

-n:指定要生成的密码个数(默认为1)

#!/bin/bash

# 处理输入参数
while getopts ":l:n:h" opt; do
  case ${opt} in
    l ) length=$OPTARG ;;  # 如果输入了-l参数,将其值赋给变量length
    n ) count=$OPTARG ;;   # 如果输入了-n参数,将其值赋给变量count
    h )
        echo "用法: generate_password.sh [选项]"
        echo "选项:"
        echo "  -l <长度>   指定生成的密码长度"
        echo "  -n <个数>   指定要生成的密码个数 (默认为1)"
        echo "  -h          显示帮助信息"
        exit ;;
    \? ) echo "无效选项: -$OPTARG" 1>&2; exit 1 ;;  # 如果输入了无效的选项,输出错误信息并退出
    : ) echo "选项 -$OPTARG 需要一个参数." 1>&2; exit 1 ;;  # 如果选项需要参数但未提供,输出错误信息并退出
  esac
done

# 如果未提供生成个数参数,则默认生成1个密码
if [[ -z "$count" ]]; then
  count=1
fi

# 定义包含字符的字符串
characters="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"

# 循环生成指定个数的随机密码
for ((i=1; i<=$count; i++)); do  # 循环从1到$count,每次迭代生成一个密码
    # 如果未提供长度参数,则生成随机长度
    if [[ -z "$length" ]]; then  # 如果未提供长度参数
        length=$(( RANDOM % 7 + 18 ))  # 生成一个随机长度,范围在18到24之间
    fi

    # 生成随机密码
    password=$(cat /dev/urandom | tr -dc "$characters" | fold -w "$length" | head -n 1)  # 生成随机密码,使用/dev/urandom作为随机源,指定的字符集,指定长度,并取第一行作为密码

    # 输出密码
    echo "生成的随机密码 $i: $password"  # 输出生成的密码和序号
done

-h参数结果

test/script# sh generate_password.sh -h
用法: generate_password.sh [选项]
选项:
  -l <长度>   指定生成的密码长度
  -n <个数>   指定要生成的密码个数 (默认为1)
  -h          显示帮助信息

不加参数结果

test/script# sh generate_password.sh 
生成的随机密码 1: A7c89Q5yQad3JHshDk
test/script# sh generate_password.sh 
生成的随机密码 1: YKK5T7gnCMdKnVpvftlv0
test/script# sh generate_password.sh 
生成的随机密码 1: RTkWqeYyZAp0nWlz0rOpN
test/script# sh generate_password.sh 
生成的随机密码 1: 9mW6HrP0G572FCqSUMuMgbhb
test/script# sh generate_password.sh 
生成的随机密码 1: 7G3pxHhpybioy1FZF8hyTHXx
test/script# sh generate_password.sh 
生成的随机密码 1: eko2L8gFnoS9kj9t65IBDZWL

-n参数结果

/script# sh generate_password.sh -n 5
生成的随机密码 1: jJ1CeGapJGuj9sjMSA
生成的随机密码 2: f9Szbk94oR7p0O7f1t
生成的随机密码 3: L7Wn7B2Qkye66Pzqsp
生成的随机密码 4: vcKHNjcJ9onEntdXm7
生成的随机密码 5: 9QjI6KCeel8Bc2qFP2

-l -n 参数结果

/script# sh generate_password.sh -l 23 -n 5
生成的随机密码 1: 7yI34gZdafFpqWaNdQi2eAp
生成的随机密码 2: FhRg7C5LWBi3PLPUmhNJ4OK
生成的随机密码 3: jyIVsltGOftgB6xl3cc9v8O
生成的随机密码 4: S9KFGsDubXnMNJ9ZMXoWRi3
生成的随机密码 5: gl0djzGjJ04uHIFa2WQSerx
  • 6
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值