本文目录导读:

- 方法一:通过 MySQL 数据库批量添加(最推荐,适用于 FreeRADIUS + Daloradius 或纯数据库存储)
- 方法二:通过 FreeRADIUS 的
users文件批量添加(适用于简单文件存储) - 辅助:生成随机密码的脚本(配合方法一使用)
- 重要提示
批量添加 RADIUS 用户通常需要操作 RADIUS 的后端数据库(常见的是 MySQL/MariaDB),或者直接修改其配置文件(如 users 或 clients.conf,取决于你的 RADIUS 软件和配置)。
以下提供两种最常见场景的批量添加脚本方法,请根据你的实际情况选择。
通过 MySQL 数据库批量添加(最推荐,适用于 FreeRADIUS + Daloradius 或纯数据库存储)
大多数现代 RADIUS 系统(如 FreeRADIUS 配合 MySQL)的用户认证信息存储在数据库的 radcheck、raduser 等表中。
以下是一个 Shell 脚本 示例,从 CSV 文件中读取用户名和密码,批量插入到 radcheck 表。
准备用户 CSV 文件 (users.csv)
user1,password123 user2,password456 user3,password789
Shell 批量添加脚本 (add_radius_users.sh)
#!/bin/bash
# 数据库连接信息 (根据你的环境修改)
DB_HOST="localhost"
DB_USER="radius"
DB_PASS="your_db_password"
DB_NAME="radius"
# CSV 文件路径
CSV_FILE="users.csv"
# 检查 CSV 文件是否存在
if [ ! -f "$CSV_FILE" ]; then
echo "错误: 文件 $CSV_FILE 不存在"
exit 1
fi
# 读取每一行并插入数据库
while IFS=',' read -r username password; do
# 跳过空行或格式错误的行
if [ -z "$username" ] || [ -z "$password" ]; then
echo "跳过无效行: $username,$password"
continue
fi
# 清理可能的空格
username=$(echo "$username" | xargs)
password=$(echo "$password" | xargs)
echo "正在添加用户: $username"
# 插入用户名和密码到 radcheck 表
# 注意:这里假设密码使用 Cleartext-Password (明文),生产环境建议使用 MD5 或 NT-Password
mysql -h "$DB_HOST" -u "$DB_USER" -p"$DB_PASS" "$DB_NAME" <<EOF
INSERT INTO radcheck (username, attribute, op, value)
VALUES ('$username', 'Cleartext-Password', ':=', '$password');
EOF
# 检查插入是否成功
if [ $? -eq 0 ]; then
echo "成功: $username"
else
echo "错误: 插入 $username 失败"
fi
done < "$CSV_FILE"
echo "批量添加完成"
运行脚本
# 给脚本执行权限 chmod +x add_radius_users.sh # 运行 ./add_radius_users.sh
通过 FreeRADIUS 的 users 文件批量添加(适用于简单文件存储)
如果你的 RADIUS 使用传统的 /etc/freeradius/3.0/users 文件(或 /etc/raddb/users),你可以通过脚本生成文件内容。
准备用户列表文件 (user_list.txt)
user1 Cleartext-Password := "password123"
user2 Cleartext-Password := "password456"
脚本:生成并追加到 users 文件
#!/bin/bash
# users 文件路径 (根据你的发行版调整)
USERS_FILE="/etc/freeradius/3.0/users"
# 用户列表文件
LIST_FILE="user_list.txt"
# 安全备份原文件
cp "$USERS_FILE" "$USERS_FILE.bak.$(date +%Y%m%d%H%M%S)"
echo "已备份原文件"
# 逐行读取并追加
while IFS= read -r line; do
# 跳过空行和注释行
[[ -z "$line" || "$line" =~ ^# ]] && continue
echo "$line" >> "$USERS_FILE"
echo "添加: $line"
done < "$LIST_FILE"
echo "批量添加完成,请重启 RADIUS 服务生效"
注意:修改 users 文件后,必须重启 RADIUS 服务:
sudo systemctl restart freeradius
或者
sudo service freeradius restart
辅助:生成随机密码的脚本(配合方法一使用)
如果你想批量生成随机密码,可以使用以下命令:
#!/bin/bash
for i in $(seq 1 10); do
username="user$(printf "%03d" $i)"
password=$(openssl rand -base64 12 | tr -dc 'a-zA-Z0-9' | head -c12)
echo "$username,$password"
done > new_users.csv
这将生成 10 个用户名(如 user001)并附带随机 12 位密码,输出到 new_users.csv。
重要提示
- 密码加密:示例中使用的是
Cleartext-Password(明文密码),出于安全考虑,生产环境建议使用加密方式:- 在 SQL 插入时使用
MD5-Password或NT-Password(SMB 哈希)。 - 或者使用 FreeRADIUS 的
radcrypt工具生成密码哈希。
- 在 SQL 插入时使用
- 权限问题:如果你使用
users文件,确保脚本以root或freerad用户运行,否则无法写入。 - 测试:在大规模添加前,先添加一个测试用户验证配置是否正确。
- 日志检查:添加后检查 RADIUS 日志(常见位置:
/var/log/radius/radutmp或/var/log/freeradius/radius.log)确保没有错误。
如果你使用的是其他 RADIUS 软件(如 Windows NPS、Cisco ACS),实现方式完全不同,请提供更多细节以便给出针对性建议。