编写一个shell程序adduser,添加一个新组class,然后添加属于这个组的30个用户,用户名的形式为yhxx,并设置密码为yhxx。其中xx从01到30(前九个是01-09,后10-30)
时间: 2024-02-21 17:58:23 浏览: 134
好的,我理解了你的问题。以下是实现adduser脚本的步骤:
1. 创建新组class
```
sudo groupadd class
```
2. 添加30个用户到class组中
```
for i in {01..30}; do
sudo useradd yh$i -m -s /bin/bash -p $(openssl passwd -1 yh$i) -G class
done
```
解释一下上面的命令:
- `for i in {01..30}` 循环30次,i的值从01到30
- `-m` 表示创建/home/yhxx目录
- `-s /bin/bash` 表示将默认shell设置为bash
- `-p $(openssl passwd -1 yh$i)` 表示将密码设置为yhxx
- `-G class` 表示将用户添加到class组中
3. 运行脚本
将上面的命令保存到一个名为adduser的脚本文件中,然后运行:
```
sudo chmod +x adduser
sudo ./adduser
```
这将创建一个新组class,然后添加属于这个组的30个用户,用户名的形式为yhxx,并设置密码为yhxx。
需要注意的是,这个脚本需要以root用户权限运行。
相关问题
编写一个shell程序,要求实现批量添加用户
编写一个简单的shell脚本用于批量添加用户,通常在Linux系统中,你可以创建一个文本文件,包含新用户的详细信息(如用户名、密码等),然后通过循环读取这个文件,并使用`adduser`命令逐个添加用户。以下是一个基本示例:
```bash
#!/bin/bash
# 用户数据文件路径,假设为users.txt
USERS_FILE="/path/to/users.txt"
# 检查文件是否存在
if [ ! -f "$USERS_FILE" ]; then
echo "File $USERS_FILE not found. Please provide a valid file path."
exit 1
fi
# 遍历文件,对每个用户执行adduser命令
while IFS= read -r line; do
# 使用awk提取用户名和密码
username=$(echo "$line" | awk '{print $1}')
password=$(echo "$line" | awk '{print $2}')
# 添加用户,这里仅做示例,实际生产环境中需要考虑权限等安全问题
if adduser "$username" -p "$password"; then
echo "User $username added successfully."
else
echo "Failed to add user $username, please check the input."
fi
done < "$USERS_FILE"
编写 shell脚本,创建 999个新用户 stu001-stu999 ,用户组为stu,密码为:用户名@cqcst2023。
在Linux环境下,使用shell脚本来批量创建大量用户并指定特定信息可以相当复杂,因为直接在一条命令中创建这么多用户可能会遇到限制。这里提供一个基础的示例脚本,你可以根据需要调整或分批运行:
```bash
#!/bin/bash
# 创建一个用户函数,用于简化重复工作
create_user() {
user=$1
group=stu
password=${user}@cqcst2023
# 检查是否已达到最大用户数
if [ $((N++)) -ge 1000 ]; then
echo "已经创建了999个用户,不再继续。"
return 1
fi
# 使用adduser命令创建用户,如果用户已经存在则忽略
if ! adduser -s /sbin/nologin -g $group -D -h /dev/null -p "$password" $user; then
echo "User $user already exists."
else
echo "User $user created successfully."
fi
}
# 初始化计数器
N=0
# 开始创建用户
for i in {001..999}; do
create_user stu$i
done
```
注意:
- 这个脚本假设你有适当的权限来创建用户(通常是root权限)。
- `-s /sbin/nologin`设置默认登录shell为无交互模式,防止暴力破解尝试。
- `-D`表示不要设置home目录。
- `-h /dev/null`将用户的home目录设为空。
- `-p "$password"`设置密码,但实际应用中应该考虑安全存储或加密密码。
运行这个脚本之前,确保先保存为.sh文件,并赋予执行权限(`chmod +x scriptname.sh`),然后使用`./scriptname.sh`来执行。
阅读全文