批量修改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 这样的命令来修改密码,但是这样会进入交互模式,即使使用脚本也不 ...
随机推荐
- vue使用textare如何正确统计输入字符个数
最近vue做微信公众号的开发,使用weui的textarea输入限制字数(官网例子),并且显示.代码如下:再安卓和电脑都没有问题,但是ios输入的时候,显示字数不正确, 但是输入之后删除其中一个,就可 ...
- 开发react 应用最好用的脚手架 create-react-app
安装 npx create-react-app my-app cd my-app npm start 安装后之后,就是这样的了 配置 这样的”零配置”没法满足我们的需求,我们需要自定义,需要加一些 l ...
- ORACLE 11G新特性之一(增加带default的字段)
在11g之前,增加带default值的字段,实现原理如下: alter table t1 add c1 varchar2(20) default 'XX' not null; 假设t1表有4千万行数据 ...
- 【串线篇】SpringMvc视图解析
一. 请求处理方法执行完成后,最终返回一个 ModelAndView 对象.对于那些返回 String,View 或 ModeMap 等类型的处理方法,Spring MVC 也会在内部将它们装配成一个 ...
- nmap使用笔记
扫描全端口判断服务 nmap ip -T4 -Pn -sV -p 1-65535 扫描端口并且标记可以爆破的服务 nmap ip --script=ftp-brute,imap-brute,smtp- ...
- nodejs npm 常用配置
npm install moduleNames : 安装 Node 模块.node安装分为全局模式和本地模式. npm install -g moduleName.npm install expres ...
- 【leetcode】924.Minimize Malware Spread
题目如下: In a network of nodes, each node i is directly connected to another node j if and only if grap ...
- centos 安装mysql冲突解决方法
[root@centos-50 servers]# rpm -ivh mysql-server-5.5.33-1.linux2.6.x86_64.rpm Preparing... ########## ...
- POJ 3279 Fliptile (dfs+二进制)
Description Farmer John knows that an intellectually satisfied cow is a happy cow who will give more ...
- hdu1059&poj1014 Dividing (dp,多重背包的二分优化)
Problem Description Marsha and Bill own a collection of marbles. They want to split the collection a ...