客户要求每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' }

最新文章

  1. 几个有趣的WEB设备API 前端提高B格必备(一)——电池状态&震动api
  2. 前端HTML-CSS规范
  3. RSA5、RSA6
  4. fine-grained
  5. Git学习笔记(5)——分支管理
  6. block 在ARC和非ARC下的不同含义
  7. Oracle【IT实验室】数据库备份与恢复之二:SQL*Loader
  8. 查看SqlServer的内存使用情况
  9. GCD调度组、自定义队列来实现多个下载任务
  10. phpcms 源码分析六:index文件
  11. auto_ptr 要点解析
  12. Android读取网络图片
  13. discuz开发学习
  14. SVO环境搭建
  15. 内核中dump_stack()的实现,并在用户态模拟dump_stack()【转】
  16. Spring 系列教程之自定义标签的解析
  17. 关于ie6下png背景透明
  18. wordcloud+jieba
  19. HBASE理论篇
  20. Percona XtraDB Cluster(PXC)-高可用架构设计说明

热门文章

  1. 团队作业3——alpha阶段冲刺
  2. input(Text)控件作为填空输入,但运行后,有曾经输入的记录显示,用autocomplete="off"解决
  3. Java中String类型的数据比较
  4. netstat和net命令粗谈
  5. Linux三个网络监视器之《二》——nethogs
  6. tp5 删除服务器文件
  7. 再见了,我最爱的OI~~~
  8. LCA(tarjan)
  9. postman的安装和使用
  10. SpringBoot的学习【6.YML 和 Properties 的语法】