RedHat9使用shell编写一个用户注册登录脚本+cmatrix美化页面

目录

一、用户注册功能

二、步骤

三、代码

四、实验测试

正确测试

重点错误测试

五、使用cmatrix美化登录页面

1、安装依赖包

2、下载 cmatrix 源代码

3、解压缩源代码包

4、编译和安装 cmatrix

5、检查 cmatrix 版本

6、将 cmatrix 命令添加到 PATH

7、使用 cmatrix

8、停止 cmatrix

六、实验总结

实验成果

实验讨论


cmatrix文件

链接:https://pan.baidu.com/s/1ewMEX8Ru5TjC_adNYGD8vA?pwd=kmmv 
提取码:kmmv


一、用户注册功能

用户名检查:在添加新用户之前,需要检查用户名是否已存在。如果用户名已存在,应提示用户重新输入。(首字母大写)

密码确认:在用户输入密码后,应要求用户再次输入以确认密码。如果两次输入的密码不一致,应提示用户重新输入。(8个字符及以上其中要包括&、$、_ 至少一个特殊字符)

用户手机号码:139数字开头不超过11位数

用户邮箱:qq.com

用户信息存储:将用户注册的信息(用户名和密码)存储到文件中,以便后续的登录验证

二、步骤

  1. 创建一个用户登录文件

  1. 创建一个文件存储用户信息

  1. 创建一个文件保存登录信息

vi login.txt

  1. 按i写入代码

  1. 给脚本添加可执行权限

chmod +x users.sh

  1. 检查脚本是否可以执行

./users.sh

三、代码

#!/bin/bash

register() {

    read -p "请输入用户名(必须以大写字母开头): " username

    # 检查用户名是否已存在

    if grep -q "^$username:" users.txt; then

        echo -e "\n用户名 '$username' 已存在,请选择其他用户名。\n"

        return 1

    fi

    while ! [[ $username =~ ^[A-Z][a-zA-Z0-9_]{2,}$ ]]; do

        read -p "无效的用户名格式。请输入以大写字母开头的用户名: " username

    done

    read -sp "请输入密码(至少8个字符,并且包含'&', '$', '_'中的至少一个): " password

    echo " "

    if [[ ${#password} -lt 8 || ! $password =~ [\&\$\_] ]]; then

        read -sp "密码至少为8个字符,并且必须包含'&', '$', '_'中的至少一个,请重新输入密码: " password

        echo " "

    fi

    read -p "请输入手机号码(必须以139开头): " phone

    while ! [[ $phone =~ ^139[0-9]{8}$ ]]; do

        read -p "无效的手机号码。请输入以139开头的手机号码: " phone

    done

    read -p "请输入电子邮件地址(必须以数字开头,并以 @qq.com 结尾): " email

    while ! [[ $email =~ ^[0-9].*@qq.com$ ]]; do

        read -p "无效的电子邮件地址。请输入以数字开头,并以 @qq.com 结尾的电子邮件地址: " email

    done

    read -p "请输入手机号码(必须以139开头): " phone

    while ! [[ $phone =~ ^139[0-9]{8}$ ]]; do

        read -p "无效的手机号码。请输入以139开头的手机号码: " phone

    done

    echo "$username:$password" >> login.txt

    echo "$username:$password:$phone:$email" >> users.txt

    echo -e "\n用户注册成功!\n"

}

login() {

    read -p "请输入用户名: " username

    if grep -q -v "^$username:" login.txt; then

        echo -e "\n用户名 '$username' 不存在,请选择其他用户名。\n"

        exit 1

    fi

    read -sp "请输入密码: " password

    while IFS=":" read -r stored_user stored_pass ; do

        if [[ $username == "$stored_user" && $password == "$stored_pass"  ]]; then

            echo -e "\n登录成功!欢迎,$username!\n  "

      cmatrix

            return 0

        fi

    done < "login.txt"

    echo -e "\n登录失败。用户名、密码不匹配。\n"

    return 1

}

while true; do

    clear

    echo -e "欢迎\n"

    echo "1. 注册"

    echo "2. 登录"

    echo "3. 退出"

    read -p "请输入您的选择: " choice

    case $choice in

        1)

            register

            ;;

        2)

            login

            ;;

        3)

            echo -e "\n退出中..."

            exit 0

            ;;

        *)

            echo -e "\n无效的选择。请输入1到3之间的数字。\n"

            ;;

    esac

    read -n1 -r -p "按任意键继续..."

done

四、实验测试

正确测试

正常注册用户

正常登录用户

重点错误测试

  1. 注册已存在用户名

  1. 输入首字母不是大写的用户名

  1. 输入密码少于8位数或者不包含$&_特殊字符

  1. 输入手机号开头不是139

  1. 输入邮箱不是@qq.com

  1. 登录错误的用户名

  1. 使用错误密码登录

五、使用cmatrix美化登录页面

cmatrix 是一个在命令行终端中显示字符动画效果的程序,它模仿了电影《黑客帝国》中的数字雨效果。这个程序通常用于在演示或等待长时间运行的任务完成时提供视觉效果。

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

3、解压缩源代码包

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

tar -zxvf cmatrix-1.2a.tar.gz

4、编译和安装 cmatrix

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

cd cmatrix-1.2a/./configure --prefix=/opt/cmatrixmake

sudo make install

5、检查 cmatrix 版本

安装完成后,你可以通过以下命令检查 cmatrix 的版本:

/opt/cmatrix/bin/cmatrix -V

6、将 cmatrix 命令添加到 PATH

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

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

source ~/.bashrc

7、使用 cmatrix

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

cmatrix

这将启动数字雨动画,并在终端窗口中显示。cmatrix 的一些常见选项包括:

--no-colors:不使用颜色。

--no-rain:不显示雨效果。

--matrix:显示一个静态的字符矩阵而不是动画。

--display-time:设置字符在屏幕上显示的时间(以百分之一秒为单位)。

--speed:设置动画的速度。

例如,如果你想以较快的速度运行 cmatrix,可以使用以下命令:

cmatrix --speed 1

8、停止 cmatrix

要停止 cmatrix 动画,可以按 q 键或使用鼠标点击终端窗口关闭

六、实验总结

实验成果

用户注册功能实现

实现了用户名检查,确保用户名唯一性。

实现了密码确认机制,确保用户两次输入的密码一致。

实现了用户手机号码和邮箱格式的简单验证(尽管对于邮箱的要求仅提到了qq.com,但理论上应支持更广泛的邮箱格式)。

用户注册信息被成功存储到文件中,为后续的登录验证提供了数据基础。

用户登录功能实现

实现了输入验证,确保用户输入的用户名和密码满足特定要求。

实现了用户验证机制,通过与存储的文件中的信息进行比对来验证用户身份。

实现了错误处理机制,能够根据不同错误类型给出相应的提示信息。

其他功能实现

提供了简单的用户界面,引导用户进行注册和登录操作。

实现了日志记录功能,便于跟踪和调试问题。

考虑了系统安全性,虽然未直接说明,但假设在存储密码时使用了加密处理(如哈希函数)。

实验讨论

系统安全性

在实际系统中,密码不应以明文形式存储,而应当使用哈希函数(如SHA-256、bcrypt等)进行加密处理后再存储。

对于密码的验证,也应对用户输入的密码进行哈希处理后再与存储的哈希值进行比对。

可以考虑使用“盐值”(salt)来增加哈希的安全性。

用户体验

可以进一步优化用户界面,使其更加友好和直观。

可以添加更多的错误提示和帮助信息,以便用户更容易理解和操作。

功能扩展

可以考虑添加账户锁定机制,以增加系统的安全性。

可以添加用户权限管理功能,以支持不同用户拥有不同的操作权限。

可以考虑与数据库进行集成,以便更方便地管理用户信息。

代码优化

应对代码进行充分的测试,确保在各种情况下都能正确运行。

可以使用shell脚本的调试工具(如set -x)来辅助调试过程。

应遵循一定的编程规范,以提高代码的可读性和可维护性。

日志管理

可以考虑使用专门的日志管理系统或工具来管理日志,以便更方便地查看和分析日志信息。

可以对日志进行定期备份和归档,以防止数据丢失。

通过本次实验,您应该已经对shell脚本编程有了更深入的了解,并掌握了基本的用户注册和登录系统的实现方法。希望这些成果和讨论能够对您有所帮助!

  • 46
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值