shell的应用程序:监视系统用户(详解)

来源:互联网 发布:40不惑50知天命60 编辑:程序博客网 时间:2024/06/05 16:58

                             unix的脚本--报告所有的登陆和注销情况详解

Logic

-------------------

get list of users(call it prev)//建立了一个在脚本运行时已登录用户的列表,并按照用户名进行排序

while true

      sleep

      get list of users(call it curr)

      compare lists

         in prev,not in curr->logout

         int curr,not int prev->login

     make prev=curr

repeat

——————————————————————————————————————————————————————————————

shell code

-----------------------

who | sort>prev //who命令输出用户列表,sort命令将列表作为输入读进,然后输出一个排序号的列表

//who | sort:告诉shell同时执行who和sort,将who的输出直接作为sort的输入

//sort>prev:告诉shell将sort的输出送至prev文件中。若此文件不存在,则创建此文件;若此文件存在,则替换其内容。

while true>prev  //prev:前一个列表。curr:当前列表

     sleep 60; //休眠一分钟

     who|sort>curr // 脚本在文件curr中创建一个新的用户列表

    echo"logged.out"

    comm -13 prev curr //comm:比较两个排序过的列表,并将此三列打印出来,这里的每一列代表一个子集。

//比较两个文件可以得到三个子集:仅文件1有的行,仅文件2有的行,两者共有的行

//可以使用命令行选项来让结果只出现其中的任意一列或者二列。

//比如:comm -23 prev  curr#删除第二列和第三列的=>仅显示prev中的内容;前一个列表中有而当前列表没有的登陆记录:注销的用户

//comm -13 prev  curr#删除第二列和第三列的=>仅显示curr中的内容;当前列表中有而前一个列表中没有的登陆记录:新登陆用户

    mv curr prev //将当前列表文件curr更名为prev并替换原来的prev

done

——————————————————————————————————————————————————————————————————

watch.sh脚本体现了三个重要的思路:

1.shell脚本的功能——与c语言比简单易用

2.软件工具的灵活性——每一个工具完成一项特定的、通用的功能

3.I/O重定向和管道的使用和作用

解释:

工具:指的是能够完成特定通用任务的功能的助手。

例如:man 可以查询关键词的用法;kill可以管理进程;

sort工具的作用是:从一个数据流中读取字节,再将结果输出到另一个流中,同时若有错误发生,则将错误报告给第三个流。

参考网站:http://blog.sina.com.cn/s/blog_54447c9001009j3w.html


0 0
原创粉丝点击