create_user.sh脚本练习

编写一个脚本create_user.sh  批量新建用户和设置密码
    ./create_user.sh  changsha  20  通过第1个位置变量传递用户名前缀 ,第2个位置变量传递创建多少个用户
    随机产生用户的密码,要求满足密码复杂性要求,长度为15 ,密码必须包含数字,大写字母,小写字母,特殊符号
    将用户名和密码都保存到文件user_passwd.txt文件里
    新建用户的时候先判断用户是否存在,如果存在就不新建用户,只是修改用户的密码,要求满足密码复杂性要求,长度为15 ,密码必须包含数字,大写字母,小写字母,特殊符号

 bash脚本create_user.sh,它接受两个参数:用户名前缀和要创建的用户数量。该脚本会检查用户是否已存在,如果存在,则仅更新密码;如果不存在,则创建新用户并设置密码。密码满足复杂性要求,并保存用户名和密码到user_passwd.txt文件中。

#!/bin/bash  
  
# 检查参数数量  
if [ $# -ne 2 ]; then  
    echo "Usage: $0 <username_prefix> <number_of_users>"  
    exit 1  
fi  
  
prefix=$1  
num_users=$2  
user_passwd_file="user_passwd.txt"  
  
# 生成符合要求的密码  
generate_password() {  
    cat /dev/urandom | tr -dc 'A-Za-z0-9!@#$%^&*' | fold -w 15 | head -n 1  
}  
  
# 检查用户是否存在,存在则更新密码,不存在则创建用户  
create_or_update_user() {  
    local username=$1  
    local password=$2  
  
    if id "$username" &>/dev/null; then  
        # 用户存在,更新密码  
        echo "User $username exists, updating password."  
        echo "$username:$password" | chpasswd  
    else  
        # 用户不存在,创建用户  
        echo "User $username does not exist, creating user."  
        useradd "$username"  
        echo "$username:$password" | chpasswd  
    fi  
  
    # 保存用户名和密码到文件  
    echo "$username:$password" >> "$user_passwd_file"  
}  
  
# 主逻辑  
for (( i=1; i<=num_users; i++ ))  
do  
    username="${prefix}${i}"  
    password=$(generate_password)  
    create_or_update_user "$username" "$password"  
done  
  
echo "User creation and password update completed. Details saved to $user_passwd_file."

 要使用此脚本,请确保有权限创建用户和修改密码(通常需要root权限)。将脚本保存到文件create_user.sh,赋予执行权限:

chmod +x create_user.sh

然后以root用户身份运行脚本:

sudo ./create_user.sh changsha 20

 这将创建20个用户,用户名以changsha为前缀,密码随机生成并满足复杂性要求,用户名和密码将被保存到user_passwd.txt文件中。

 

好的,我可以帮你回答这个问题。 你可以将以下代码保存为staff_menu.sh文件并执行: ``` #!/bin/bash while true do clear echo "system information management system" echo "1、主机信息" echo "2、列出占用磁盘空间较多的目录" echo "3、ftp自动登录" echo "4、建立账号" echo "5、主机检测" echo "6、自动建立hosts.allow和hosts.deny" read -p "Input your choice: " choice case $choice in 1) echo "您选择了主机信息" # 在此处添加主机信息操作的代码 read -n1 -p "Press any key to continue..." ;; 2) echo "您选择了列出占用磁盘空间较多的目录" # 在此处添加列出占用磁盘空间较多的目录操作的代码 read -n1 -p "Press any key to continue..." ;; 3) echo "您选择了ftp自动登录" # 在此处添加ftp自动登录操作的代码 read -n1 -p "Press any key to continue..." ;; 4) echo "您选择了建立账号" # 在此处添加建立账号操作的代码 read -n1 -p "Press any key to continue..." ;; 5) echo "您选择了主机检测" # 在此处添加主机检测操作的代码 read -n1 -p "Press any key to continue..." ;; 6) echo "您选择了自动建立hosts.allow和hosts.deny" # 在此处添加自动建立hosts.allow和hosts.deny操作的代码 read -n1 -p "Press any key to continue..." ;; *) echo "Invalid choice, press return key to try again....." read -n1 -p "Press any key to continue..." ;; esac done ``` 在主程序文件system_menu.sh中,你可以添加以下代码来检查其他6个脚本文件是否存在: ``` #!/bin/bash if [ ! -f staff_menu.sh ]; then echo "staff_menu.sh文件不存在" exit 1 fi if [ ! -f host_info.sh ]; then echo "host_info.sh文件不存在" exit 1 fi if [ ! -f disk_usage.sh ]; then echo "disk_usage.sh文件不存在" exit 1 fi if [ ! -f ftp_login.sh ]; then echo "ftp_login.sh文件不存在" exit 1 fi if [ ! -f create_user.sh ]; then echo "create_user.sh文件不存在" exit 1 fi if [ ! -f host_check.sh ]; then echo "host_check.sh文件不存在" exit 1 fi if [ ! -f auto_hosts.sh ]; then echo "auto_hosts.sh文件不存在" exit 1 fi ./staff_menu.sh ``` 这段代码将会检查staff_menu.sh、host_info.sh、disk_usage.sh、ftp_login.shcreate_user.sh、host_check.sh和auto_hosts.sh这7个脚本文件是否存在。如果某个脚本文件不存在,将会给出相应的提示,并退出程序。如果所有脚本文件都存在,程序将会执行staff_menu.sh。 希望这些代码可以帮助你解决问题!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值