zoukankan      html  css  js  c++  java
  • Ansible 批量修改密码 海口

    客户要求每3个月修改一次主机密码。密码规则为客服提供的一串字符 xxxx + 主机后3位。

    将需要登录主机添加到 Ansible。
    1. 将需要登录主机的公钥添加到 known_hosts
    ssh-keyscan 192.168.1.11 192.168.1.12 192.168.1.13  >> /root/.ssh/known_hosts
    
    1. 生产 Ansible 主机的秘钥
    ssh-keygen -t rsa -P '' -f /root/.ssh/id_rsa
    
    1. 将需要登录主机添加到 hosts
    [zk]
    192.168.1.11 ansible_ssh_pass=xxxx
    192.168.1.12 ansible_ssh_pass=xxxx
    192.168.1.13 ansible_ssh_pass=xxxx
    
    1. Ansible playbook
    ---
    - hosts: zk
      gather_facts: no
    
      tasks:
    
      - name: install ssh key
        authorized_key: user=root 
                        key="{{ lookup('file', '/root/.ssh/id_rsa.pub') }}" 
                        state=present
    

    执行 playbook

    ansible-playbook ssh-addkey.yml
    

    这时候去把 hosts 文件里面的 ansible_ssh_pass 删掉。
    执行ansible all -m ping 也不需要密码
    此方案只适用于刚拿到的服务器,当你禁止root登录以后,此方案失效。
    解决方法是,使用普通用户,赋予sudo权限

    批量修改密码

    客户给的字符串为 Rfv5%+,将该字符串及主机名后三位赋予xx变量

    修改密码脚本 pass_modify.sh

    #!/bin/bash
    
    
    xx=Rfv5%+`hostname|grep -oP '...$'`
    echo "$xx"|passwd --stdin root
    

    使用 ansible script 模块,远程执行该脚本即可。

    其余方法:

    ---
      - hosts: zk
        gather_facts: false
        tasks:
        - name: change user passwd
          user: name={{ item.name }} password={{ item.chpass | password_hash('sha512') }}  update_password=always
          with_items:
               - { name: 'root', chpass: 'Lcsmy,123' }
    
  • 相关阅读:
    CString与char *互转总结
    string 与char* char[]之间的转换
    VC++下使用SQLite数据库
    VC连接数据库方式
    C/C++中判断某一文件或目录是否存在
    漂亮的CSS按钮样式集以及在线生成工具
    PhpStorm 4.0 & 5.0 部署本地Web应用 (转)
    PHP的serialize序列化数据与JSON格式化数据
    c/c++中产生随机数
    [STL系列]开篇简单介绍
  • 原文地址:https://www.cnblogs.com/fsckzy/p/10649413.html
Copyright © 2011-2022 走看看