批量修改root密码
公司有五十多台服务器。每台服务器中使用的密码完全不同,同时操作系统也不一样,centos5,6,7 、ubuntu,windows都有,更不用提其中各种小版本。
root密码定期更改是一个大问题(windows暂时不提)。
对于批量更改,首先想到的ansible,但是使用ansible有一个问题就是需要一台管理机,管理机需要通过将自己的ssh_key传给被受体服务器才可以正常使用
对于添加ssh_key,固然很麻烦。所以后面找到了expect这个命令
expect命令默认服务器中没有,可以在阿里的base源中找到,直接使用yum install -y expect进行安装
直接看脚本
服务器列表信息
[root@bogon ~]# cat modifyrootpasswd.txt
##ip user port oldpw newpw
##------------------------------------------------------------------------------------------------------
192.168.3.145 root 22 chunlanyy PU4XdnIy3eWz7TM17OKniHoeBUnRMO1q
192.168.3.146 root 22 chunlanyy 70Zzm993Qnf13MGpBHaBgcvUX7pztwib
[root@bogon ~]#
在excel表中,按上述格式,把旧密码写入,然后再批量直接将要修改的新密码复制进入
密码批量生成使用tr命令
[root@bogon ~]# tr -cd '[:alnum:]' < /dev/urandom | fold -w 32 | head -2
QSnDl7EuEXLUbgNf9jBuVm8P0x6zb3OT
wvk4ihCl7G2f0ISySu2COifr1tHtAp6C
其中head可以显示多少行,然后直接copy至excel中,自动对齐
后将整个excel表的信息copy至sublime中,形成文本rz至服务器中即可
要注意的是,在服务器信息列表中,一定要cat一下文本的内容,注意linux和windows中不同分隔符的区别。
[root@bogon ~]# cat modifyrootpasswd.txt
##ip user port oldpw newpw
192.168.3.145 root 22 chunlanyy PU4XdnIy3eWz7TM17OKniHoeBUnRMO1q
192.168.3.146 root 22 chunlanyy 70Zzm993Qnf13MGpBHaBgcvUX7pztwib[root@bogon ~]#
如果出现的像是这种,会导致密码修改失败。
expect脚本
[root@bogon ~]# cat passwordmodify.sh
#!/bin/bash
File=/root/modifyrootpasswd.txt
for Ip in `awk '/^[^#]/{print $1}' $File`;do
User=`awk -v Var=$Ip '{if(Var==$1)print $2}' $File`
Port=`awk -v Var=$Ip '{if(Var==$1)print $3}' $File`
Oldpw=`awk -v Var=$Ip '{if(Var==$1)print $4}' $File`
Newpw=`awk -v Var=$Ip '{if(Var==$1)print $5}' $File`
expect -c "
spawn ssh -p $Port $User@$Ip
set timeout 30
expect {
\"(yes/no)\" {send \"yes\r\";exp_continue}
\"password:\" {send \"$Oldpw\r\";exp_continue}
\"$User@*\" {send \"echo \'$Newpw\' |passwd --stdin $User\r exit\r\";exp_continue}
}"
done
要注意的是
1.expect中的\r是出现交互的标示符
2.spawn是expect中的执行命令
小结:
相比于ansible,expect具有方便简洁的作用,不受制于ssh_key。
但是缺点也很明显,执行结果显示并不直接,因为有一大堆交互内容显示(完全模拟手动登陆),无法知晓更改结果,同时在服务器密码的生成也不够自动化。
批量修改root密码的更多相关文章
- ansible非root用户批量修改root密码
前言: 由于线上服务器密码长久没有更新,现领导要求批量更换密码.线上的之前部署过salt,但由于各种因素没有正常使用. 使用自动化工具批量修改的计划搁浅了,后来领导给了个python多线程修改密码脚本 ...
- Ansible批量修改root密码
0x01:首先做好免密登录 http://www.cnblogs.com/evlon/p/8094306.html 0x02:批量修改密码 ansible all -m raw -a "ec ...
- linux系统批量修改root密码
#!/bin/bash ip_list=(192.168.36.12 192.168.36.13) remote_cmd="echo new-passwd | passwd --stdin ...
- linux批量修改root密码脚本
转至:https://blog.csdn.net/onionm/article/details/100514892?utm_medium=distribute.pc_relevant_download ...
- ansible 批量修改root密码
[root@sz_fy_virt_encrypt_33_239 fetch]# cat /opt/passwd.yml - hosts: web vars: path: /home/opsadmin ...
- Python 批量修改root密码
#_*_coding:utf8_*_ from multiprocessing import Process, Pool import paramiko import sys,os host_list ...
- Ansible playbook 批量修改服务器密码 先普通后root用户
fsckzy Ansible playbook 批量修改服务器密码 客户的需求:修改所有服务器密码,密码规则为Rfv5%+主机名后3位 背景:服务器有CentOS6.7,SuSE9.10.11,r ...
- (转)linux passwd批量修改用户密码
linux passwd批量修改用户密码 原文:http://blog.csdn.net/xuwuhao/article/details/46618913 对系统定期修改密码是一个很重要的安全常识, ...
- linux passwd批量修改用户密码
linux passwd批量修改用户密码 对系统定期修改密码是一个很重要的安全常识,通常,我们修改用户密码都使用 passwd user 这样的命令来修改密码,但是这样会进入交互模式,即使使用脚本也不 ...
随机推荐
- java应用之openfire入门篇
前言 openfire是一个聊天服务端,好比qq服务端.本质是个socker server. openfire通讯协议是 xmpp ,什么是xmpp参考百科 https://baike.baidu. ...
- HWDB手写汉字识别 - CNN
MARK Caffe 的 googleNet近似模型,识别HWDB汉字200类 准确率96.3
- atomic 原子操作的类
import java.util.concurrent.atomic.AtomicInteger; /** * 原子操作的类 atomic */ public class VolatileDemo { ...
- Spring学习笔记第一篇——初识Spring
1.简单介绍 spring的ioc底层是先配置xml文件,接着创建工厂,利用dom4j解析配置文件,最后通过反射完成.大概步骤差不多这样,这些具体代码spring帮你完成了.现在我们只需要配置xml和 ...
- iiview Select 选择框打勾选中的内容label和展示的不一致
Select选择框里加入了OptionGroup.option ; 以及input输入框支持模糊搜索: 不一致的原因:缺少 :label-in-value="true";官方文档 ...
- Push to GitHub:could not resolve host: github.com
系统:Mac os x 10.11.3 操作:Push to GitHub 错误如下: git push origin ssh: Could not resolve hostname ssh.gith ...
- MySQL配置(二)
上篇文章简单的讲了一下MySQL的配置,这章我在具体讲述一下我所配置的一些内容. 一.密码策略 MySQL5.7默认安装了密码安全检查的插件.默认密码检查策略要求密码必须包含:大小写字母 ...
- linux下安装JMeter(小白教程)
用windows平台测试时,会受到网络条件的影响,导致测试结果不够准确,尤其是高并发的情况下,需要能够精准的测试请求的响应时长,对于网络的要求更加苛刻.在这样的情况下,可以考虑在linux服务器端安装 ...
- JeeSite配置多数据源方案
jeesite简介 JeeSite是基于多个优秀的开源项目,高度整合封装而成的高效,高性能,强安全性的 开源 Java EE快速开发平台. JeeSite本身是以Spring Framework为核心 ...
- 排序(分组后排序&整排)
一.整排 要求:根据score进行排名,分数相同,名次相同,且连续 表如下图: sql语句: 方法一:select a.score, (select count(distinct b.score) f ...