htpasswd命令的使用

htpasswd的基本用法

htpasswd是Apache服务器中生成用户认证的一个工具,仅说明htpasswd的用法:

htpasswd参数

-c 创建passwdfile.如果passwdfile 已经存在,那么它会重新写入并删去原有内容.
-n 不更新passwordfile,直接显示密码
-m 使用MD5加密(默认)
-d 使用CRYPT加密(默认)
-p 使用普通文本格式的密码
-s 使用SHA加密
-b 命令行中一并输入用户名和密码而不是根据提示输入密码,可以看见明文,不需要交互
-D 删除指定的用户

~]# htpasswd -c -~]#  /hO2iRlM8E9y8/~~]# htpasswd -cb  ceshi ~]#  /~]# htpasswd  -~]#  //~~]# htpasswd -D ~]#  /~~]# htpasswd -nb wxly

一个需求实例:

有很多个用户,需要添加web的用户认证。

这时候我们可以采用expect的方式进行,如下:

[root@os1 htpassword]# tree
.
├── exce.sh          #  执行的shell脚本
├── one.exp          #  进行自动交互的expect脚本
├── passwd           #  存放加密后密码的文件
└── user             #  添加的用户名和密码0 directories, 4 files

脚本内容依次如下:

用户名和密码文件如下:

cat user
cdw 123456ywj 123456zjf 123456mfj 123456dsx 123456dsl 123456tx1 123456

expect脚本内容如下:

cat one.exp
#!/usr/bin/expect  -f
set name [lindex $argv 0]
set passwd [lindex $argv 1]
spawn /usr/bin/htpasswd -d passwd $name
expect "password:"send "passwd\r"expect "password:"send "passwd\r"expect eof

需要执行的shell脚本如下:

cat exce.sh#!/bin/bashif [ -e passwd ]; then
    echo -e "\033[32;1m The file is exiting \033[0m"else
    touch passwd # 创建存储密码的文件ficat user | while read linedo 
    name=$(echo $line | awk '{print $1}') # 提取用户名
    password=$(echo $line | awk '{print $2}') # 提取密码    /usr/bin/expect one.exp $name $password # 执行expect脚本
    [ $? -eq 0 ] && echo -e "\033[32;2m add the account successfully!\033[0m"
    sleep 2done

 

上一篇:基于C++类和指针实现二叉树


下一篇:站点加锁