使用bash批量删除SFTP用户
2023/12/01 14:14 投稿

这个脚本的目的是通过读取用户列表文件(/home/user_list.txt),自动移除SFTP用户并清理相关配置。脚本通过循环读取用户列表中的每一行,提取用户名,并执行删除用户以及其主目录,以及删除sshd_config中的配置。

注:部分语法经过调整,以适应cgi-bin的web运行上的显示需求,但这些调整不会影响脚本的功能。

#!/bin/bash

USER_LIST="/home/user_list.txt"
SSHD_CONFIG="/etc/ssh/sshd_config"


function remove_all_users() {
  echo "Content-type: text/plain"
    echo

    while read -r line; do
        username=$(echo "$line" | awk '{print $1}')
        sudo userdel -r "$username"
        sudo rm -rf "/home/$username/"
        sudo sed -i "/^Match User $username/,/^ForceCommand internal-sftp/d" "$SSHD_CONFIG"
        echo "User $username removed."
    done < "$USER_LIST"
    sudo systemctl restart sshd
    sudo systemctl reset-failed sshd.service  # Reset failed count
    sudo systemctl restart sshd
    echo "All users removed successfully."
}
remove_all_users