Shell编程完成用户注册登录

目录

需求

1. menu 界面

welcome

(1)注册用户

(2)用户登录

(3)退出

2. 注册用户(

1)用户名(首字母大写)

(2)密码(8 位及其以上 必须有三个字符其中一个以上如: & $ _ 隐试密码)

(3)手机号码(必须以 139 开头)

(4)邮箱 邮箱名数字开头@qq.com

(5)检测是否重名,重手机号和邮箱

(6)不重名、手机号、邮箱写入 /etc/secfinfo

3. 用户登录

(1)输入用户名

(2)密码

(3)邮箱

(4)查用户是否存在,密码邮箱是否正确

(5)执行屏保(代码雨)

屏保(代码雨的安装)

1.安装依赖包

2、下载 cmatrix 源代码编辑

3.编译和安装 cmatrix

4.将 cmatrix 命令添加到 PATH编辑

5.使用 cmatrix

实验测试

1.menu 界面编辑

2.选 1 进行注册名字(首字母必须大写)

​3.密码必须 8 位数以上并且至少有一个字符,密码隐试(这里密码设置为:1234567&)手机号必须 139 开头且邮箱为数字开头@qq.com

4.选 2 进行用户登录输入用户名字密码和邮箱(AJ,1234567&,122@qq.com)

​5.登陆成功后会出现屏保(代码雨)

6. 选 3 退出

​7. vim /etc/secfinfo 查看注册的用户


需求

1. menu 界面
welcome
(1)注册用户
(2)用户登录
(3)退出
2. 注册用户
(1)用户名(首字母大写)
(2)密码(8 位及其以上 必须有三个字符其中一个
以上如: & $ _ 隐试密码)
(3)手机号码(必须以 139 开头)
(4)邮箱 邮箱名数字开头@qq.com
(5)检测是否重名,重手机号和邮箱
(6)不重名、手机号、邮箱写入 /etc/secfinfo
3. 用户登录
(1)输入用户名
(2)密码
(3)邮箱

(4)查用户是否存在,密码邮箱是否正确
(5)执行屏保(代码雨)

#! /bin/bash
USER_INFO_FILE="/etc/setfinfo"
# 验证用户名(首字母大写)
function validate_username() {
local username=$1
if ! [[ $username =~ ^[A-Z][a-zA-Z0-9_]{0,16}$ ]];
then
echo "首字母需要大写"
return 1
fi
return 0
}
# 验证密码(至少 8 个字符,且包含特殊字符)
function validate_password() {
local password=$1
if [[ ${#password} -lt 8 ]]; then
echo "Invalid password. It should be at least 8
characters long."
return 1
fi
if ! [[ ${#password} -ge 8 && $(echo "$password" |
grep -E '[&\$\\_]') ]]; then
echo "并且必须包含至少一个 &、$ 或 _ 符号,请重新输入。
"
return 1
fi
return 0
}
# 验证手机号(假设为中国手机号,139 开头)
function validate_phone_number() {
local phone_number=$1
if ! [[ $phone_number =~ ^139[0-9]{8}$ ]]; then
echo "手机号需要 139 开头"
return 1
fi
return 0
}
# 验证邮箱地址(xxx@qq.com)
function validate_email() {
local email=$1
if ! [[ $email =~ ^[0-9][a-zA-Z0-9._%+-]+@qq.com ]];
then
echo "Invalid email address."
return 1
fi
return 0
}
# 检查用户名是否已存在
check_duplicate_username() {
local username=$1
if grep -q "^$username:" "$USER_INFO_FILE"; then
echo "Username already exists."
return 0
fi
return 1
}
# 检查手机号是否已存在
check_duplicate_phone_number() {
local phone_number=$1
if grep -q ":$phone_number:" "$USER_INFO_FILE"; then
echo "Phone number already exists."
return 0
fi
return 1
}
# 检查邮箱是否已存在
check_duplicate_email() {
local email=$1
if grep -q ":$email" "$USER_INFO_FILE"; then
echo "Email address already exists."
return 0
fi
return 1
}
# 用户注册函数
register_user() {
local username password phone_number email
read -p "Enter username: " username
if ! validate_username "$username"; then return; fi
if check_duplicate_username "$username"; then
return; fi
read -s -p "Enter password: " password
echo
if ! validate_password "$password"; then return; fi
read -p "Enter phone number: " phone_number
if ! validate_phone_number "$phone_number"; then
return; fi
if check_duplicate_phone_number "$phone_number";
then return; fi
read -p "Enter email address: " email
if ! validate_email "$email"; then return; fi
if check_duplicate_email "$email"; then return; fi
# 写入用户信息到文件
# echo
"$username:$password_hash:$phone_number:$email" >>
"$USER_INFO_FILE"
echo "$username:$password:$phone_number:$email" >>
"$USER_INFO_FILE"
echo "User registration successful!"
}
#用户登录
login_user() {
local username password email input_password
read -p "Enter username: " username
if ! grep -q "^$username:" "$USER_INFO_FILE"; then
echo "用户不存在"
return 1
fi
read -s -p "Enter password: " input_password
echo ""
read -p "Enter email address: " email
# if ! grep -q "^$username:" "$USER_INFO_FILE"; then
# echo "User does not exist."
# return 1
# fi
password=$(awk -v username="$username" -F:
'$1==username {print $2}' "$USER_INFO_FILE")
if [[ "$password" != "$input_password" ]]; then
echo "Incorrect password."
return 1
fi
registered_email=$(awk -v username="$username" -F:
'$1==username {print $4}' "$USER_INFO_FILE")
if [[ "$registered_email" != "$email" ]]; then
echo "Incorrect email address."
return 1
fi
echo "登录成功."
cmatrix
}
show_menu() {
clear
echo "User Management System"
echo "1. 注册用户"
echo "2. 登录用户"
echo "3. 退出"
read -p "Enter your choice [1-3]: " choice
}
# 主程序
while true; do
show_menu
case $choice in
1)
register_user
;;
2)
login_user
;;
3)
echo "Exiting..."
exit 0
;;
*)
echo "Invalid choice. Please try again."
;;
esac
read -p "Press Enter to continue..." -n 1 -s
echo
done

屏保(代码雨的安装)

1.安装依赖包

在编译 cmatrix 之前,你需要安装一些必要的依赖包,如 ncurses
和 gcc 。 使 用 以 下 命 令 安 装 这 些 依 赖 : sudo yum install -y
ncurses-devel gcc

2、下载 cmatrix 源代码

你可以从 SourceForge 网站下载 cmatrix 的源代码包。使用 wget 命令下载最
新版本的 cmatrix:

wget -q https://jaist.dl.sourceforge.net/project/cmatrix/cmatrix/1.2a/cmatrix-1.2a.tar.gz 


并解压缩源代码包
下载完成后,解压缩源代码包:
 

tar -zxvf cmatrix-1.2a.tar.gz


3.编译和安装 cmatrix

进入解压缩后的目录,并开始编译和安装过程:

cd cmatrix-1.2a/
./configure --prefix=/opt/cmatrix
make
sudo make install

4.将 cmatrix 命令添加到 PATH

为了方便使用,你可以将 cmatrix 的安装目录添加到你的 PATH 环境变量中:
 

echo 'export PATH=/opt/cmatrix/bin:$PATH' >> ~/.bashrc
source ~/.bashrc


5.使用 cmatrix

安装完成后,你可以通过简单地输入 cmatrix 来运行程序:

cmatrix

实验测试
1.menu 界面


2.选 1 进行注册名字(首字母必须大写)


3.密码必须 8 位数以上并且至少有一个字符,密码隐试(这里密码设置为:1234567&)
手机号必须 139 开头且邮箱为数字开头@qq.com

4.选 2 进行用户登录输入用户名字密码和邮箱(AJ,1234567&,122@qq.com)


5.登陆成功后会出现屏保(代码雨)

6. 选 3 退出


7. vim /etc/secfinfo 查看注册的用户

  • 32
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值