美国加州大学当堂限时设计题。
发表于 : 2009-10-23 8:26
一个在加州大学念书的朋友shell script课的当堂限时设计题,要求学生1个半小时完成,无论完成多少,只要时间一到都要交。现在拿过来给大家探讨探讨,练练基本功。
PS:你可以谈思路,也可以实现你感兴趣的部分。只要你来凑个热闹,都是欢迎的。
写一个脚本名为groups,groups有2个命令行参数,执行以下功能:
首先熟悉 /ect/passwd文件里面包含的用户信息,再熟悉另一个文件 /etc/group,该文件包含了在系统上的groups信息,在这个文件的每一行有四个被冒号分开的字段:组名(group name),一个空的字段(以前存的是组密码),数字组ID,第四字段是这个组的用户序列,各用户间用逗号隔开,你的脚本将要报告每个用户属于哪个组(或者哪几个组)
为简化错误的处理,你可以假设,要么没有参数值,或者两个参数都给出,并且都有效。第一个命令行参数是密码文件(password file)的位置,如果不同于/ect/passwd文件的, 默认没有参数给出。第二个命令行参数是组文件位置,如果不同于/ect/group文件的, 默认没有参数给出。
这个报告包含密码文件(passwd file)每一个用户整行的信息。每一行必须输出user name,the name of the primary group, 和属于其他组的用户(这个列表也是用逗号隔开,按字母顺序排列。比如:
User: root Primary: root Secondary: adm,bin,daemon,disk,floppy,sys,wheel
你可以自己设计passwd和group文件调试,这里是里面的样本
passwd shutdown:*:6:0:shutdown:/sbin:/sbin/shutdown
group root::0:root,eggert,sync,shutdown,halt,operator
PS:你可以谈思路,也可以实现你感兴趣的部分。只要你来凑个热闹,都是欢迎的。
写一个脚本名为groups,groups有2个命令行参数,执行以下功能:
首先熟悉 /ect/passwd文件里面包含的用户信息,再熟悉另一个文件 /etc/group,该文件包含了在系统上的groups信息,在这个文件的每一行有四个被冒号分开的字段:组名(group name),一个空的字段(以前存的是组密码),数字组ID,第四字段是这个组的用户序列,各用户间用逗号隔开,你的脚本将要报告每个用户属于哪个组(或者哪几个组)
为简化错误的处理,你可以假设,要么没有参数值,或者两个参数都给出,并且都有效。第一个命令行参数是密码文件(password file)的位置,如果不同于/ect/passwd文件的, 默认没有参数给出。第二个命令行参数是组文件位置,如果不同于/ect/group文件的, 默认没有参数给出。
这个报告包含密码文件(passwd file)每一个用户整行的信息。每一行必须输出user name,the name of the primary group, 和属于其他组的用户(这个列表也是用逗号隔开,按字母顺序排列。比如:
User: root Primary: root Secondary: adm,bin,daemon,disk,floppy,sys,wheel
你可以自己设计passwd和group文件调试,这里是里面的样本
passwd shutdown:*:6:0:shutdown:/sbin:/sbin/shutdown
group root::0:root,eggert,sync,shutdown,halt,operator