ansible批量修改服务器密码
2024-08-24 19:52:15
看了一下网上代码大多数是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))
运行时候是这样:需要手动输入主机前面的数字
最新文章
- jquery的offset().top 和position().top 详解 和如何用js实现
- jQuery中 pageX,clientX,offsetX,layerX的区别
- Oracle 差异增量和累计增量备份
- vm导入后远程桌面无法登陆域账户
- codeforces 709C C. Letters Cyclic Shift(贪心)
- 防止SQL注入问题
- 所在实习公司的JS笔试题
- Unity3d 基于物理渲染Physically-Based Rendering之specular BRDF
- C# 线程--第三线程池
- 利用Jquery实现http长连接(LongPoll)
- head tail 命令
- [LeetCode#82]Remove Duplicates from Sorted Array II
- VS删除未使用的命名空间
- 远程数据client交换器
- 填涂颜色 洛谷 p1162
- phpMyAdmin访问远程MySQL数据库的方法
- OpenCV手写数字字符识别(基于k近邻算法)
- css属性之统一设置文本及div之间的对齐方式
- adb.exe,start-server' failed
- Guns后台管理系统框架(毕业设计神器)
热门文章
- [BZOJ2761] [JLOI2011] 不重复数字 (C++ STL - set)
- 《剑指offer》面试题41. 数据流中的中位数
- [C# 学习]委托和线程
- 【记录一个问题】android下opencl中的event.getProfilingInfo()测速时间并不准确
- 桥接模式(Bridge模式)
- golang中的匿名函数三种用法
- ping: Network is unreachable
- find直接copy大于某一个时间小于某一个时间的文件
- 将项目上传至GitHub
- 来自开发者的点赞!HMS Core荣获多个行业奖项