实验5:用户登录动态监测 您所在的位置:网站首页 unix的用户名 实验5:用户登录动态监测

实验5:用户登录动态监测

2023-07-17 02:22| 来源: 网络整理| 查看: 265

实验目的

使学生熟悉一种简单的指定用户的监测方法,熟悉UNIX的基本SHELL程序设计方法和使用技巧,包括:

命令行参数检测

用户变量

while循环控制

暂停进程(sleep)

实验内容

编写一个用户监测程序usr_monitor, 其运行格式为:

usr_monitor  username

其中username是用户指定的任意一个用户名。程序运行时首先列出当前系统中的已登录用户的名单,再检查指定用户是否已登录。如果已登录,则显示相应信息;如果未登录,则等待该用户登录,直到指定用户登录进入系统为止。

实验内容:shell程序设计思路

(1)根据变量$#的值检查命令行上是否有一个用户名,如果有则继续运行;如果没有或多于一个用户名则输出提示信息:Usage: usr_monitor  username

(2)运行who命令,并将运行结果中的用户名字段截取下来,保存到一个用户变量中。

(3)echo命令显示该变量的值,即当前系统中的用户名单。

(4)判断用户名单中是否包含命令行上指定的用户,如果有则输出提示信息:user [username] is logon,并退出程序。

(5)如果用户名单中没有包含命令行上指定的用户,则输出提示信息:waiting user [username] …,光标停留在省略号后面。

(6)使用while循环,用sleep命令每隔5秒钟检查指定用户是否已登录系统。检测方法与步骤2相同。

(7)如果指定用户未登录,则一直等待下去;如果指定用户已登录,则在省略号后面接着输出提示信息:       [username] is log on,退出循环,并结束程序。

实验内容:shell程序编写要求

上述命令仅作参考,可以自行确定需要采用的命令,只要程序能达到“实验要求”中指定的功能即可

需要调整程序格式,在程序头加上若干行程序功能注释,在程序的重要功能语句处加上简单注释。

参考代码:user_monitor.sh if [ $# -ne 1 ] # 利用$#判断命令行有几个参数 then echo "Usage: usr_monitor username" # 参数不对就报错 exit fi user_input=$1 # 将第一个参数赋给user_input echo -e "You will monitor [$user_input]\n" user=$(who) username=`who |awk '{print $1}'` # 只截取登陆了的用户名 echo -e "Current user list is:\n$username\n" compare=$(echo $username | grep "${user_input}") #获取username中与user_input相同的部分 while [ "$compare" == "" ] do echo "waiting user [$user_input] ..." sleep 5 username=`who |awk '{print $1}'` result=$(echo $username | grep "${user_input}") done echo "[$user_input] is log on" 程序要求达到的运行效果

1、命令行上未指定用户名时,程序给出错误提示,并退出

2、usr_monitor程序运行时,指定ubuntu用户名,程序显示当前已登录系统的用名单,等待指定的ubuntu用户的登录,当ubuntu登录系统时,程序给出提示信息,并退出。

 

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有