实验5:用户登录动态监测 | 您所在的位置:网站首页 › unix的用户名 › 实验5:用户登录动态监测 |
实验目的
使学生熟悉一种简单的指定用户的监测方法,熟悉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 实验室设备网 版权所有 |