利用expect批量修改Linux服务器密码
一个执着于技术的公众号
背景
修改Linux系统密码,执行passwd即可更改密码。可如果有成千上百台服务器呢,通过ssh的方式逐一进行修改,对我们来说,工作量是非常大,且效率非常低下。因此采用批量修改密码的方式是比较快的。
环境准备
需求:在Linux环境下运行,需要tcl和expect支持
检查系统是否有expect和tcl:
可以看到系统已经安装有这两个软件,如果没有,yum -y install expect tcl进行安装即可。
「实验说明:本文利用expect的自动化人机交互功能,登录到远端服务器批量修改密码」
具体步骤
「本文以批量修改服务器root密码为例」
1、编写脚本文件
实现批量修改密码,需要创建三个文件:
touch ~/ip.txt
该文件用于存放目标服务器的IP地址和root密码
这里以两台设备为例,如果你需要修改上百台服务器密码,只需要编写服务器IP及对应的root密码即可。如图所示:
touch ~/passwd.sh
利用for循环实现批量执行,如图:
touch ~/action.exp
利用expect自动人机交互功能,设置特定的匹配形式,便于匹配相应的动作
注意:第一行#! /bin/expect,表示使用expect解释器执行;第11行表示将密码统一修改为123456
2、为脚本添加可执行权限
3、大功告成,实现批量修改密码
「只需要执行sh passwd.sh即可实现批量修改密码!」
脚本解释
1)第一个脚本passwd.sh,应该好理解。就是利用awk命令把我们编写的ip.txt文本中的服务器IP及root密码分别提取出来;通过for循环,批量交给expect解释器执行。
2)我们重点解释下action.exp脚本;
第1行告诉操作系统,以下脚本代码使用expect解释器来执行。
第2行及第3行使用
[lindex $argv n],表示变量ipaddr及passwd接受从bash传递过来的参数,从0开始,分别表示第一个,第二个参数。这里表示从passwd.sh脚本中提取出来的ip及密码第4行设定了本脚本所有的超时时间,单位是秒(s)
第5行利用
spawn命令启动ssh会话连接第6-9行
expect {}代表多行期望;当匹配到yes/no时,自动输入yes并执行回车动作;匹配到password时,自动输入密码并回车。第11行不用多解释了吧,登录上远程服务器后,将密码修改为123456
第12及13行表示退出expect;其中
expect eof与spawn对应,表示捕获终端输出信息的终止。
往期精彩
利用expect批量修改Linux服务器密码的更多相关文章
- ansible批量修改linux服务器密码的playbook
从网上找到批量修改Linux服务器root密码的playbook. 使用方法: 1.输入要修改的inventory组 2.按需要,在playbook中输入要修改的IP.新密码,如下: - hosts: ...
- python批量修改linux主机密码
+++++++++++++++++++++++++++++++++++++++++++标题:python批量修改Linux服务器密码时间:2019年2月24日内容:基于python实现批量修改linu ...
- 批量修改Linux系统密码
截取主机IP地址最后一位数.匹配一组定义好的自定义密码.使用chpasswd修改主机账户密码 截图主机IP [root@web01 ~]# ip addr 1: lo: <LOOPBACK,UP ...
- 批量修改Linux密码脚本(Python)
搭建环境 centos 7.4 使用脚本 python 批量修改connect用户的密码 生成密码为随机密码 保存为xls文档 #!/usr/bin/env python # -*- coding: ...
- 如何在Windows系统上利用Telnet协议连接Linux服务器
Telnet协议是Internet远程登录服务的标准协议,它为用户提供了在本地计算机上完成远程主机工作的能力.很多终端使用者都习惯在计算机上利用Telnet会话来远程控制服务器.这里小编就分两步为大家 ...
- 修改linux用户密码
对于初学者来说,如何修改linux用户密码也不是件容易的事,其实非常简单,下面举例说明: 如果是以root身份登录,修改root密码.只要输入 passwd 就会出现: New password: ...
- 利用python批量修改word文件名的方法示例
利用python批量修改word文件名的方法示例 最近不小心把硬盘给格式化了,由于当时的文件没有备份,所以一下所有的文件都没有了,于是只能采取补救措施,用文件恢复软件恢复了一部分的数据出来,但是恢复完 ...
- 查看和修改Linux服务器的时区和时间
一.查看和修改Linux的时区1. 查看当前时区 命令 : "date -R" 2. 修改设置Linux服务器时区方法 A 命令 : "tzselect" 方法 ...
- Shell 批量修改主机 用户密码
问题:132.121.114 和 132.121.118 网段共 48 台主机未添加基础监控,但是 wh 账户不能登录 需进行批量修改密码操作. 目前情况:op1对上述48台机器设备均能免密登录. 操 ...
随机推荐
- java后台解决上传图片翻转90的问题,有demo,经过测试可用
1.需要加入 依赖 metadata-extractor.jar 依赖如下 <dependencies> <!-- Extracts Exif, IPTC, XMP, ICC and ...
- Numpy中数组的乘法
Numpy中数组的乘法 按照两个相乘数组A和B的维度不同,分为以下乘法: 数字与一维/二维数组相乘: 一维数组与一维数组相乘: 二维数组与一维数组相乘: 二维数组与二维数组相乘: numpy有以下乘法 ...
- 数字电路的多路复用(MUX)
学习文章:https://mp.weixin.qq.com/s/1pfLfvkAPyhEMLvfnyDy0g 最基本--2选1的MUX结构: 可以看作是:assign Y=S?B:A; 下面使用MUX ...
- CSS 常用的定位和布局方法汇总(已添加源码地址)
CSS-Layout 旨在打造详尽的前端布局代码学习库(自从用了框架开发,CSS生疏了不少,所以开这个库练练手)SF不能正确解析含有中文的网址,所以某些预览链接无法跳转,请访问我的博客阅读此文 常见定 ...
- Anaconda安装tensorflow和keras(gpu版,超详细)
本人配置:window10+GTX 1650+tensorflow-gpu 1.14+keras-gpu 2.2.5+python 3.6,亲测可行 一.Anaconda安装 直接到清华镜像网站下载( ...
- javaweb之修改功能
数据库的修改功能,主要是通过查询,保留之前的数据,得到当前想要修改的页面,并进行修改. 一.dao层 在dao层需要添加两个fangfa,一个查询,一个修改(这是整个dao层,包括之前的增删.浏览) ...
- C#编写程序,找一找一个二维数组中的鞍点
编写程序,找一找一个二维数组中的鞍点(即该位置上的元素值在行中最大,在该列上最小.有可能数组没有鞍点).要求: 1.二维数组的大小.数组元素的值在运行时输入: 2.程序有友好的提示信息. 代码: us ...
- java中接口interface有什么用呢?举例!
接口只有方法的定义,没有方法的任何实现.那这有什么意义呢?马克-to-win: 接口就像一个服务合同.接口只关心必须得干什么而不关心如何去实现它.有 意义吗?有意义.马克-to-win:比如我们的软件 ...
- 控制器全屏显示.不展示导航栏navigationbar
有些时候需要 让控制器全屏显示 ,不需要导航栏,或者说是在导航栏底部 基本情况: >控制器全屏 ``` if (@available(iOS 11.0, *)) { self.tableView ...
- Python入门-面向对象三大特性-封装
一.封装 封装,顾名思义就是将内容封装到某个地方,以后再去调用被封装在某处的内容. 所以,在使用面向对象的封装特性时,需要: 将内容封装到某处 从某处调用被封装的内容 第一步:将内容封装到某处 sel ...