shell脚本:

 
  
  1. #!/bin/bash 
  2. time=`date +%Y%m%d%H%M` 
  3. cat ip.list | while read line 
  4. do   
  5.     a=(0 1 2 3 4 5 6 7 8 9 a b c d e f g h q m o p A B C D E F G H Q M O P @ $ % ^) 
  6.     newpass=`for ((i=0;i<64;i++));do echo -n ${a[$RANDOM % ${#a[*]}]};done;echo` 
  7.     ip=`echo $line |awk '{print $1}'
  8.     user=`echo $line |awk '{print $2}'
  9.     pass=`echo $line |awk '{print $3}'
  10.     echo "$ip $user $newpass" >> $time-ip.list 
  11.     expect changp.exp $ip $user $pass $newpass  >>  /tmp/changp-$time.log 
  12. done 

expect脚本:

 
  
  1. #!/usr/local/bin/expect 
  2. set timeout 8 
  3. set ip [lindex $argv 0] 
  4. set user [lindex $argv 1] 
  5. set pass [lindex $argv 2] 
  6. set newpass [lindex $argv 3] 
  7.  
  8. if {$argc!=4}{ 
  9.     puts stderr "Usage:your arguments is error!" 
  10.     exit 1 
  11.     } 
  12. spawn ssh $user@$ip 
  13. expect  { 
  14.         "(yes/no)?" {send "yes\r";exp_continue} 
  15.         "password:"  {send "$pass\r"} 
  16.         } 
  17. expect "#" 
  18. send "passwd $user" 
  19. expect "password:" 
  20. send "$newpass" 
  21. send "exit \r" 
  22. expect eof 

ip.list格式:

192.169.1.188  root password