expect 批量修改密码(无密码ssh登入就不要用这个了)

#!/bin/bash

for ip in `cat iplist.txt`

do

pwd=`mkpasswd -l 12 -s 0 -C 0`

grep -q $ip /root/pwd.log&&passwd=$(grep $ip /root/pwd.log|cut -d: -f2)||passwd=123456

expect -c "

spawn ssh [email protected]$ip  passwd

expect {

\"*yes/no*\" { send \"yes\r\";exp_continue }

\"*password*\" { send \"$passwd\r\"; }

}

expect {

\"*New password:\"  { send \"$pwd\r\";exp_continue }

\"Retype new password:\" { send \"$pwd\r\";exp_continue }

\"*#\" { send \"exit\r\"; }

}

"

[[ -f /root/pwd.log ]]&&sed -i "/^$ip/d" /root/pwd.log

echo "$ip:$pwd" >>/root/pwd.log

done

其中passwd=123456是初始密码

新密码放在/root/pwd.log里面

ip列表放在脚本目录下的iplist.txt里面

时间: 2024-08-04 15:37:44

expect 批量修改密码(无密码ssh登入就不要用这个了)的相关文章

linux通过expect批量修改密码

公司最近要上一批CDN服务器,需要定期修改密码,原本想用自动化工具来实现这个功能,但是最近比较忙没有时间搞,所以先用脚本的方式来修改,上网搜索了一下,发现大同小异,所以参考网络上脚本做了个测试,结果一个下午没了,坑稍微有点多,在下文我会尽量解释清楚,以避免像我这样的新人掉坑,不多说,正文开始! 系统环境:CentOS Linux release 7.3.1611 (Core) Selinux: disable 执行目录: /home 一 , 需求:linux环境下运行,需要tcl和expect支

配置网络、集群内主机名设定、ssh登入、bash命令、通配符

作业一:临时配置网络(ip,网关,dns)+永久配置 设置临时网络配置: 配置IP ifcongfig ens33 192.168.16.177/24 (ifconfig 网卡 ip地址    /24代表它子网掩码) 配置网关 route add default gw 192.168.16.177 netmask 255.255.255.0  添加默认网关 配置 DNS vim /etc/resolv.conf            (DNS配置文件位置) 设置永久网络配置: cd /etc/s

自己写的playbook批量修改密码并推送公钥,实现免密登录!

自己写的playbook批量修改密码并推送公钥,实现免密登录!由于工作需要需要写这个东西,就把这个记录下来了.第一步:使用 ssh-keygen -t rsa生成密钥对.第二步:添加ansible hosts,我这个是test代替.第三步:确定服务器上sshd_config文件里的root登录权限是否开启.实例代码: hosts: testsudo: yestasks: name: 修改sshd_config文件shell: sed -i 's/PermitRootLogin no/Permit

linux '--stdin'错误 -批量修改密码

虚拟机:VMware虚拟机  系统:Linux ubuntu 4.4.0-31-generic #50~14.04.1-Ubuntu SMP Wed Jul 13 01:07:32 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux 看 <鸟哥的私房菜 -服务器架设篇>的时候,跟着书上敲指令的时候遇到了一个问题,批量添加用户和修改密码失败. shell命令如下: 使用 sh运行脚本的时候出现以下错误: 实测用户和用户组都已经添加成功,但是批量修改密码的时候出现错误,

ssh登入不上输入密码解决

公司一直是用ssh无密码登入设备,今天给客户开下设备权限,客户登入不让输入密码: 解决方法: 编辑 /etc/ssh/sshd_config,把 PasswordAuthentication no 改成yes 重启sshd:service sshd restart 解决

[心得]Ubuntu無法ssh登入

裝好ssh後,發覺無法用root登入,可是sshd_config接正確. 後來發現原因在於,Ubuntu沒有root帳號,但是可以透過sudo -s拿到root權限. su root 密碼怎樣打也行不通,不過sudo -s卻可以. 總之就是要用sudo -s 後 執行passwd 建立帳號 ref. http://www.thegeekstuff.com/2009/09/ubuntu-tips-how-to-login-using-su-command-su-gives-authenticati

chpasswd: 非交互模式批量修改密码

命令:chpasswd批量修改用户密码 工作原理:从系统的标准输入读入用户的名称和口令,并利用这些信息来更新系统上已存在的用户的口令 语法:1:# echo 用户名:密码 | chpasswd2:# chpasswd < doiido.txt 参数:-e :如果使用了-e选项,口令将只能以加密的方式传递如果未使用-e选项,口令将按明文的形式传递 注意事项1:用户名必须是系统上已存在的用户2:普通用户没有使用这个指令的权限3:如果输入文件是按非加密方式传递的话,请对该文件进行适当的加密.4:指令文

Python 远程批量修改密码脚本

(一)注:pexpect模块需安装 #!/usr/bin/env python #coding:utf8 import pexpect import sys iplist = ['192.168.140.142','192.168.140.145'] ##定义主机列表 oldpasswd = '234567' ##旧密码 newpasswd = '1234567' ##新密码 while iplist: ip = iplist[-1] ##获取一个IP iplist.pop() ##列表去掉一个

centos 安装后ssh登入慢

# vim /etc/ssh/sshd_config修改为: GSSAPIAuthentication no 注意:修改之后记得重启sshd服务# service sshd restart 具体原因还不知道,可指导一下