看了一下网上代码大多数是ansible-playbook实现的,需要写一个脚本,或者手动传递变量进去。

以前用python tcp模块写过客户端主动上报修改密码脚本

今天写一个ansible主控客户端修改密码

shell版本

#!/bin/bash
#展示所有定义的主机
allhost=`egrep -v '^$|^#|^\[' /etc/ansible/hosts |awk -F ' ' '{print $1}'`
now=`date +'%Y-%m-%d %H:%M:%S'`
for ip in $allhost
do
echo $ip
done #选择主机
echo -e "\033[33;5m-----------------------\033[0m"
read -p "请输入以上其中一台主机:" host #生成密码
passwd=`head /dev/urandom | tr -dc A-Za-z0-9 | head -c 15` #把要修改的主机和密码保存
echo "$now $host $passwd" >> ~/script/passwd.txt
echo "主机:$host 密码:$passwd" #python3加密sha512
newpass=`/usr/bin/python3 -c "from passlib.hash import sha512_crypt; import getpass; print(sha512_crypt.using(rounds=5000).hash('$passwd'))"` #执行修改密码
ansible $host -m user -a "name=root password="$newpass" update_password=always"

  

运行时候是这样:需要手动输入主机

python版本

#-*- coding:utf-8 -*-
import os
from passlib.hash import sha512_crypt
import getpass
import random
import string
#获取所有主机
f=os.popen("grep -vE '^$|^#|^\[' /etc/ansible/hosts |awk '{print $1}'")
host=list(f)
#显示主机
for index,element in enumerate(host):
print(str(index)+':'+element) def randpass(length=15):
chars=string.ascii_letters+string.digits
return ''.join([random.choice(chars) for i in range(length)])
#选择主机
choice=int(input('请选择主机,填写数字:'))
mechina=host[choice].strip()
#生成密码
mima=randpass()
sha512mima=sha512_crypt.using(rounds=5000).hash(mima)
print('\n您选择的主机是:',mechina,'密码是:',mima,'\n')
#调用ansible修改密码
os.system(("ansible %s -m user -a 'name=root password=%s update_password=always'") % (mechina,sha512mima))

  

运行时候是这样:需要手动输入主机前面的数字

最新文章

  1. jquery的offset().top 和position().top 详解 和如何用js实现
  2. jQuery中 pageX,clientX,offsetX,layerX的区别
  3. Oracle 差异增量和累计增量备份
  4. vm导入后远程桌面无法登陆域账户
  5. codeforces 709C C. Letters Cyclic Shift(贪心)
  6. 防止SQL注入问题
  7. 所在实习公司的JS笔试题
  8. Unity3d 基于物理渲染Physically-Based Rendering之specular BRDF
  9. C# 线程--第三线程池
  10. 利用Jquery实现http长连接(LongPoll)
  11. head tail 命令
  12. [LeetCode#82]Remove Duplicates from Sorted Array II
  13. VS删除未使用的命名空间
  14. 远程数据client交换器
  15. 填涂颜色 洛谷 p1162
  16. phpMyAdmin访问远程MySQL数据库的方法
  17. OpenCV手写数字字符识别(基于k近邻算法)
  18. css属性之统一设置文本及div之间的对齐方式
  19. adb.exe,start-server' failed
  20. Guns后台管理系统框架(毕业设计神器)

热门文章

  1. [BZOJ2761] [JLOI2011] 不重复数字 (C++ STL - set)
  2. 《剑指offer》面试题41. 数据流中的中位数
  3. [C# 学习]委托和线程
  4. 【记录一个问题】android下opencl中的event.getProfilingInfo()测速时间并不准确
  5. 桥接模式(Bridge模式)
  6. golang中的匿名函数三种用法
  7. ping: Network is unreachable
  8. find直接copy大于某一个时间小于某一个时间的文件
  9. 将项目上传至GitHub
  10. 来自开发者的点赞!HMS Core荣获多个行业奖项