action.exp
#! /bin/expect
set ipaddr [lindex $argv 0]
set user[lindex $argv 1]
set passwd [lindex $argv 2]
set new_passwd [lindex $argv 3]
set timeout 30
spawn ssh root@$ipaddr
expect {
"yes/no" {send "yes\r";exp_continue}
"password" {send "$passwd\r"}
}
expect "#"
send "echo $user:'$new_passwd' | chpasswd \r"
send "exit\r"
expect eof
passwd.sh
#! /bin/bash
for ip in `awk '{print $1}' /modifypass/ip.ini`
do
user=`grep $user /modifypass/ip.ini |awk '{print $2}'`
#
passwd=`grep $ip /modifypass/ip.ini |awk '{print $3}'`
#
new_passwd=`grep $ip /modifypass/ip.ini |awk '{print $4}'`
expect /modifypass/action.exp $ip $user $passwd $new_passwd
done
ip.ini
#******主机ip ssh登录用户名 旧密码 新密码******#
192.168.209.1 root ******oldpass****** ******newpass******
执行 passwd.sh 修改密码