You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Ansible生成无相邻重复字符的指定规则随机密码

解决Ansible生成无相邻重复字符的随机密码问题

原代码使用password lookup模块生成的密码无法避免相邻重复字符,我们可以通过循环生成+正则校验的方式解决这个问题:每次生成密码后检查是否存在相邻重复字符,若不符合则重新生成,直到得到符合要求的结果。

以下是修改后的完整代码:

---
- set_fact:
    password_length: "{{ 20 + (5 | random) }}"

- debug:
    var: password_length

- name: 生成符合要求的无相邻重复随机密码
  set_fact:
    random_password: "{{ lookup('password', '/dev/null length={{ password_length }} chars=ascii_lowercase,ascii_uppercase,digits,_-!.,;:') }}"
  until: random_password is match("^(?!.*(.)\\1).+$")
  retries: 10
  delay: 1

- name: 输出生成的密码
  debug:
    msg: "{{ random_password }}"

关键说明:

  1. 正则校验规则:^(?!.*(.)\1).+$ 是负向前瞻正则,用于匹配没有任何相邻重复字符的字符串。其中(.)\1表示匹配任意字符后跟相同字符,(?!...)表示排除这种情况。
  2. 循环逻辑:通过until条件判断密码是否符合要求,retries设置最大重试次数(10次足够覆盖绝大多数情况),delay设置每次重试的间隔时间。
  3. 保留原有需求:依然保留了原代码中20-25位长度、指定字符集的要求,仅添加了相邻重复校验逻辑。

内容的提问来源于stack exchange,提问作者Ziad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 16:20:00