目录
(2)密码(8 位及其以上 必须有三个字符其中一个以上如: & $ _ 隐试密码)
3.密码必须 8 位数以上并且至少有一个字符,密码隐试(这里密码设置为:1234567&)手机号必须 139 开头且邮箱为数字开头@qq.com
4.选 2 进行用户登录输入用户名字密码和邮箱(AJ,1234567&,122@qq.com)
需求
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
![](https://img-blog.csdnimg.cn/direct/2b080986962d4dfc896005e38a82004e.png)
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
![](https://img-blog.csdnimg.cn/direct/5854e87bd3984cb5b65c7551c16377a4.png)
5.使用 cmatrix
安装完成后,你可以通过简单地输入 cmatrix 来运行程序:
cmatrix