怎样用脚本批量删除VPN用户?

wen 实用脚本 5

本文目录导读:

怎样用脚本批量删除VPN用户?

  1. 基于 OpenVPN 的批量删除(使用 easy-rsa 或配置文件)
  2. 基于 WireGuard 的批量删除
  3. 基于 SoftEther VPN 的批量删除(通过 vpncmd)
  4. 基于数据库的批量删除(如 FreeRADIUS、MySQL)
  5. 通用安全注意事项
  6. 批量删除用户脚本模板(通用)

要批量删除VPN用户,具体方法取决于你使用的VPN服务器软件(如OpenVPN、WireGuard、SoftEther、IPSec等)以及用户管理方式(如通过配置文件、数据库或LDAP),以下是一些常见场景的脚本示例和步骤:


基于 OpenVPN 的批量删除(使用 easy-rsa 或配置文件)

如果用户是通过 easy-rsa 管理的证书,或者通过配置文件(如 ccdipp.txt)控制,可以编写脚本来批量操作。

吊销证书(推荐)

使用 easy-rsa 吊销单个证书:

./easyrsa revoke <username>

批量吊销(假设用户列表在 users.txt 中):

#!/bin/bash
while IFS= read -r user; do
    cd /path/to/easy-rsa
    ./easyrsa revoke "$user" <<< "yes"
done < users.txt

删除客户端配置文件

如果用户通过 .ovpn 文件连接,且服务器通过 ccd 目录控制:

#!/bin/bash
for user in $(cat user_list.txt); do
    rm -f /etc/openvpn/ccd/$user
    echo "Deleted config for $user"
done

基于 WireGuard 的批量删除

WireGuard 的用户通常以 [Peer] 块形式存在配置文件中,批量删除需要编辑配置文件。

脚本示例(删除多个 Peer)

假设用户公钥列表在 keys_to_delete.txt 中:

#!/bin/bash
config_file="/etc/wireguard/wg0.conf"
backup_file="$config_file.bak"
cp "$config_file" "$backup_file"
while IFS= read -r pubkey; do
    # 删除对应 Peer 块(从 [Peer] 到下一行空行或文件结尾)
    sed -i "/\[Peer\]/,/^$/ { /$pubkey/,/^$/d }" "$config_file"
    echo "Removed peer with key: $pubkey"
done < keys_to_delete.txt
systemctl restart wg-quick@wg0

基于 SoftEther VPN 的批量删除(通过 vpncmd)

SoftEther 提供命令行工具 vpncmd,批量删除用户:

#!/bin/bash
server="localhost"
hub="VPNHUB"
password="your_password"
while IFS= read -r user; do
    ./vpncmd localhost /SERVER /PASSWORD:$password /HUB:$hub \
        UserDelete "$user" /NOPASS
    echo "Deleted user: $user"
done < user_list.txt

基于数据库的批量删除(如 FreeRADIUS、MySQL)

如果用户存储在数据库中(MySQL):

#!/bin/bash
mysql -u root -p -e "
USE radius_db;
DELETE FROM radcheck WHERE username IN ('user1','user2','user3');
"

或从文件读取:

while IFS= read -r user; do
    mysql -u root -p -e "DELETE FROM radcheck WHERE username='$user';"
done < users.txt

通用安全注意事项

  • 备份:执行前备份配置文件或数据库。
  • 验证用户列表:确保文件格式正确,排除空行或错误用户名。
  • 测试模式:先使用 echo 模拟操作,确认无误后再执行实际删除。
  • 权限:脚本可能需要 root 权限运行(如 sudo ./delete_users.sh)。

批量删除用户脚本模板(通用)

#!/bin/bash
# 批量删除 VPN 用户脚本
# 用法: ./delete_vpn_users.sh user_list.txt
LIST_FILE="$1"
if [[ ! -f "$LIST_FILE" ]]; then
    echo "Usage: $0 <user_list_file>"
    exit 1
fi
echo "Starting deletion of VPN users..."
while IFS= read -r username; do
    # 去除空格
    username=$(echo "$username" | tr -d '[:space:]')
    if [[ -z "$username" ]]; then
        continue
    fi
    echo "Processing: $username"
    # 在这里替换为实际的删除命令
    #  删除 OpenVPN 证书
    # cd /etc/openvpn/easy-rsa && ./easyrsa revoke "$username" <<< "yes"
    # 或者删除 WireGuard peer
    # sed -i "/\[Peer\]/,/^$/ { /$username/,/^$/d }" /etc/wireguard/wg0.conf
done < "$LIST_FILE"
echo "Batch deletion complete."

  • 如果你使用 OpenVPN,推荐使用 easy-rsa revoke 吊销证书。
  • WireGuard 需编辑配置文件并重启服务。
  • SoftEther 通过 vpncmd 命令行工具。
  • 数据库 方式直接操作 SQL 语句。

根据你的实际 VPN 服务类型选择对应方法,并始终先测试再正式执行。

抱歉,评论功能暂时关闭!