分类: 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