Chinaunix首页 | 论坛 | 博客
  • 博客访问: 28431
  • 博文数量: 109
  • 博客积分: 495
  • 博客等级: 大尉
  • 技术积分: 1055
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-23 14:12
文章分类

全部博文(109)

文章存档

2012年(21)

2011年(88)

我的朋友
最近访客

分类: Python/Ruby

2011-07-29 15:10:03


#!/usr/bin/expect -f
##===============================* chpasswd V0.2 *===================================
# 创建日期: 2008-1-1
# 修改日期: 2008-1-15
# 版    本: V0.2
# 说    明:                                              
# 此脚本用于批量的修改远程的linux AS4服务器的用户密码运行脚本前请先新建一个文件,把
# 要修改用户密码的Linux  #
# 服务器的IP地址输入此文件中,一行一个IP地址.例:     
#                       192.168.x.x                 
#                       10.0.x.x                    
# 用    法:                                              
# 脚本名 主机IP表 要修改密码的用户名 旧密码 新密码  
#                                                    
# 脚本执行完成后会生成一个 update-failed 文件,里面包含了密码修改失败的服务器的IP地址.                 
##=====================================================================================
proc warning {argc hosts} {
        if {$argc<4} {
                send_user "USAGE: command filename user oldpassword newpassword\n"
                exit
        } elseif {[file isfile $hosts]!=1} {
                send_user "sorry: File $hosts not found or not in right format!\n"
                exit
                }      
        }
proc login {user IP oldpasswd newpasswd failed} {
set timeout 20
set done 1
while {$done} {
    expect -re "continue connecting (yes/no)?" {
            send "yes\r"
        } -re " password:" {
            send "$oldpasswd\r"
        } -re "New|new UNIX password:" {
            send "$newpasswd\r"
        } -re "Permission denied, please try again." {
            puts $failed $IP
            break
        } -re "No route to host" {
             puts $failed $IP
             break 
        } -re "Connection refused" {
            puts $failed $IP
            break
        } timeout {
            puts $failed $IP
            break
        } -re "service not known" {
              send_user "\n"
              send_user "        #--------------------------------------#\n"
              send_user "        #          Update complete!            #\n"
              send_user "        #  Please read the file update-failed  #\n"
              send_user "        #--------------------------------------#\n"
              send_user "\n"
              exit
        } eof { break }
        }
}
set argc $argc
set hosts [lindex $argv 0]
set user [lindex $argv 1]
set oldpasswd [lindex $argv 2]                   
set newpasswd [lindex $argv 3]                                        
warning $argc $hosts
set failed [open update-failed w+]
set f [open $hosts r]
while {[gets $f IP]} {
set cmd "ssh passwd $user"
eval spawn $cmd
login $user $IP $oldpasswd $newpasswd $failed
}
close $f
看看对你有没用
阅读(412) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:iptables地址映射

给主人留下些什么吧!~~