htpasswd的基本用法
htpasswd是Apache服务器中生成用户认证的一个工具,仅说明htpasswd的用法:
htpasswd参数
-c 创建passwdfile.如果passwdfile 已经存在,那么它会重新写入并删去原有内容.
-n 不更新passwordfile,直接显示密码
-m 使用MD5加密(默认)
-d 使用CRYPT加密(默认)
-p 使用普通文本格式的密码
-s 使用SHA加密
-b 命令行中一并输入用户名和密码而不是根据提示输入密码,可以看见明文,不需要交互
-D 删除指定的用户
#创建密码文件,创建用户test [root@os1 ~]# htpasswd -c passwd test New password: Re-type new password: Adding password for user test [root@os1 ~]# cat passwd test:$apr1$plhRTg52$UQMbT9r/hO2iRlM8E9y8/. [root@os1 ~]#
##命令行中输入用户名和密码 [root@os1 ~]# htpasswd -cb passwd ceshi 123456 Adding password for user ceshi [root@os1 ~]# cat passwd ceshi:$apr1$1863a7z7$qiOe9pcK6x/G2a2TYjWoM0
###在原有的文件中添加用户 [root@os1 ~]# htpasswd passwd test New password: Re-type new password: Adding password for user test [root@os1 ~]# cat passwd ceshi:$apr1$1863a7z7$qiOe9pcK6x/G2a2TYjWoM0 test:$apr1$0V/OaCvu$jLgbFOGrVLucReDgwiuto. [root@os1 ~]#
#删除用户 [root@os1 ~]# htpasswd -D passwd test Deleting password for user test [root@os1 ~]# cat passwd ceshi:$apr1$1863a7z7$qiOe9pcK6x/G2a2TYjWoM0 [root@os1 ~]# #直接在命令行显示用户名和密码 [root@os1 ~]# htpasswd -nb wxly 123456 wxly:$apr1$PkB0SZse$iZeKC3qrRGp080ySit04E1
一个需求实例:
有很多个用户,需要添加web的用户认证。
这时候我们可以采用expect的方式进行,如下:
[root@os1 htpassword]# tree . ├── exce.sh # 执行的shell脚本 ├── one.exp # 进行自动交互的expect脚本 ├── passwd # 存放加密后密码的文件 └── user # 添加的用户名和密码 0 directories, 4 files
脚本内容依次如下:
用户名和密码文件如下:
cat user cdw 123456 ywj 123456 zjf 123456 mfj 123456 dsx 123456 dsl 123456 tx1 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/bash if [ -e passwd ]; then echo -e "\033[32;1m The file is exiting \033[0m" else touch passwd # 创建存储密码的文件 fi cat user | while read line do 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 2 done