一、使用linux下的shell编程,创建 /home/my.sh 文件,实现以下功能: 1、在 /home 目录下创建班级名称目录,名称为:21大数据B班 2、创建用户账号(账号名为学生的姓名拼音全拼,如张三的拼音全拼为 zhangsan),默认密码为 123456,用户主目录为 /home/21大数据B班/余希铨,全名为余希铨 3、通过输入参数形式实现,如 sh my.sh 21大数据B班 余希铨 yuxiquan 10001 4、将1、2二步使用函数方式进行封装,函数名分别为 func_createFolder、func_createUser
时间: 2024-02-18 14:04:09 浏览: 80
好的,以下是实现功能的代码:
```shell
#!/bin/bash
# 定义创建目录函数
func_createFolder(){
if [ ! -d "/home/$1" ]; then
mkdir "/home/$1" && echo "创建目录 /home/$1 成功!"
else
echo "目录 /home/$1 已存在!"
fi
}
# 定义创建用户函数
func_createUser(){
username=$1
password=$2
homedir="/home/$3/$4"
fullname=$5
if [ ! -d "$homedir" ]; then
mkdir -p "$homedir"
fi
if id "$username" >/dev/null 2>&1; then
echo "用户 $username 已存在!"
else
useradd -d "$homedir" -m -p $(echo "$password" | openssl passwd -1 -stdin) -c "$fullname" "$username"
echo "创建用户 $username 成功!密码为 $password,主目录为 $homedir"
fi
}
# 获取参数,执行函数
if [ $# -eq 3 ]; then
func_createFolder "$1"
func_createUser "$(echo $2 | tr '[:upper:]' '[:lower:]')" "123456" "$1" "$3" "$3"
else
echo "参数错误!正确格式为:sh my.sh 21大数据B班 余希铨 yuxiquan"
fi
```
解释一下代码:
1. 首先定义了两个函数:`func_createFolder` 和 `func_createUser`,分别用于创建目录和创建用户。
2. `func_createFolder` 函数接收一个参数,即要创建的目录名称,如果该目录不存在,则创建该目录并输出“创建目录 xxx 成功!”的提示信息,否则输出“目录 xxx 已存在!”的提示信息。
3. `func_createUser` 函数接收五个参数,分别为用户名、密码、目录名、主目录和全名。首先判断主目录是否存在,如果不存在则创建该目录。接着判断该用户是否已存在,如果不存在则创建该用户,并输出“创建用户 xxx 成功!密码为 xxx,主目录为 xxx” 的提示信息,其中密码使用 openssl 生成。如果用户已存在,则输出“用户 xxx 已存在!”的提示信息。
4. 最后通过获取脚本执行时的参数,调用 `func_createFolder` 和 `func_createUser` 函数来实现创建目录和创建用户的功能。如果参数不正确,则输出“参数错误!”的提示信息。
注意事项:
1. 脚本需要在 root 权限下执行,否则无法创建用户。
2. 每次执行脚本都会创建一个新用户,如果要创建多个用户,需要修改用户名参数。
3. 由于密码是明文传输,存在安全隐患,建议使用其他方式生成密码。
阅读全文