Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1849641
  • 博文数量: 293
  • 博客积分: 10127
  • 博客等级: 上将
  • 技术积分: 3029
  • 用 户 组: 普通用户
  • 注册时间: 2010-08-12 19:05
文章分类

全部博文(293)

文章存档

2011年(11)

2010年(282)

我的朋友

分类: LINUX

2010-08-19 13:47:30

这个东西绝对是好东西~~
LINUX是交互型操作系统,当用户使用passwd修改密码时需要输入密码两次,

一般的shell无法直接完成操作

借助了expect脚本 , 完美实现该功能

首先安装expect

# yum -y install expect

创建expect脚本,写入以下内容

#!/usr/bin/expect                                  
if {$argc<2} {
          send_user "usage: $argv0 username password\n"
          exit
          }

          set username [lindex $argv 0]
          set password [lindex $argv 1]
          send_user "execute:$argv0 $username $password\n"

spawn -noecho htpasswd httpasswd1 [lindex $argv 0]

expect {
        "*口令*"        {send "$password\n"}
        "*word*"        {send "$password\n"}
        }
expect {
        "*口令*"        {send "$password\n"}
        "*word*"        {send "$password\n"}
        }

#expect "*word*"                                      
#send "$password\n"

expect eof
exit

红色处为执行的命令,这里使用htpasswd 文件名 用户的命令

给于expect.sh 执行权限

#chmod 755 expect.sh

创建链接脚本auto.sh

#!/bin/bash

for i in `cat $1`          #比如执行auto.sh xxx,那么$0就是auto.sh,$1就是xxx,以此类推
do
          USERNAME=${i%:*}   #自右起第一个冒号后的字符都不要
          PASSWORD=${i#*:}   #自左起第一个冒号前的字符都不要
          ./expect.sh $USERNAME $PASSWORD
done

测试文件1.txt

test:123456

执行命令./auto 1.txt

阅读(11582) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~