马哥教育网络班21期-第三周课程练习

STOP WISHING

START DOING

                                                                                                             —- WEEKLY PLAN


小僧最近已经学习到bash脚本编程,手痒难耐。就偷懒以脚本形式完成作业吧。近期工作异常繁忙,较多灵异问题难以解决。烦……

BeJing 的同学说好的周末聚聚,居然至今无人响应。你们这群骗子,坏人。


1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。
2、取出最后登录到当前系统的用户的相关信息。
3、取出当前系统上被用户当作其默认shell的最多的那个shell。
4、将/etc/passwd中的第三个字段数值最大的后10个用户的信息全部改为大写后保存至/tmp/maxusers.txt文件中。
5、取出当前主机的IP地址,提示:对ifconfig命令的结果进行切分。
6、列出/etc目录下所有以.conf结尾的文件的文件名,并将其名字转换为大写后保存至/tmp/etc.conf文件中。
7、显示/var目录下一级子目录或文件的总个数。
8、取出/etc/group文件中第三个字段数值最小的10个组的名字。
9、将/etc/fstab和/etc/issue文件的内容合并为同一个内容后保存至/tmp/etc.test文件中。
10、请总结描述用户和组管理类命令的使用方法并完成以下练习:
   (1)、创建组distro,其GID为2016;
   (2)、创建用户mandriva, 其ID号为1005;基本组为distro;
   (3)、创建用户mageia,其ID号为1100,家目录为/home/linux;
   (4)、给用户mageia添加密码,密码为mageedu;
   (5)、删除mandriva,但保留其家目录;
   (6)、创建用户slackware,其ID号为2002,基本组为distro,附加组peguin;
   (7)、修改slackware的默认shell为/bin/tcsh;
   (8)、为用户slackware新增附加组admins;
   (9)、为slackware添加密码,且要求密码最短使用期限为3天,最长为180天,警告为3天;
   (10)、添加用户openstack,其ID号为3003, 基本组为clouds,附加组为peguin和nova;
   (11)、添加系统用户mysql,要求其shell为/sbin/nologin;
   (12)、使用echo命令,非交互式为openstack添加密码。


Script 

#!/bin/bash
# 
# 博客作业:第3周
# 2016-07-16
# 勇爷出品,如有类似,纯属扯蛋
#
while true
echo
read -p " 输入要查看的题目:(1 - 10): " num
echo 
echo -e " 结束快捷键 Ctrl+C "
echo 
do
	if [ -z $num ]; then
		echo "输入数字你不会吗?"
	elif [ $num = 1 ]; then
		echo -n -e "\e[1;31m 当前登录用户:\e[0m"
		echo `who | cut -d" " -f1  | uniq`
	elif [ $num = 2 ]; then
		echo -n -e "\e[1;31m 最后登录用户:\e[0m"
		echo `last | grep -v still | head -n 1 | cut -d" " -f1`
		echo -n -e "\e[1;31m 用户信息:\e[0m"	
		id $(last | grep -v still | head -n 1 | cut -d" " -f1)
	elif [ $num = 3 ]; then
		echo -n -e "\e[1;31m 当前系统默认shell最多的是:\e[0m"
		grep sh$ /etc/passwd | cut -d: -f7 | uniq -c | sort -r | head -1
	elif [ $num = 4 ]; then
		sort -n -t: -k3 /etc/passwd | tail | tr "a-z" "A-Z" >> /tmp/maxusers.txt
		echo -e "\e[1;31m 请看结果:\e[0m"
		cat /tmp/maxusers.txt
	elif [ $num = 5 ]; then
		echo -n -e "\e[1;31m 当前主机IP地址:\e[0m"
		ifconfig | grep -o "\(\<[0-9]\{1,3\}\>[.]\)\{3\}\<[0-9]\{1,3\}" | head -1
	elif [ $num = 6 ]; then
		ls /etc/*.conf | tr "a-z" "A-Z" > /tmp/etc.conf
		echo -n -e "\e[1;31m 请看结果:\e[0m"
		cat /tmp/etc.conf
	elif [ $num = 7 ]; then
		echo -e "\e[1;31m var目录下一级子目录:\e[0m"
		ls -l /var/ | grep ^d 
		echo -n -e "\e[1;31m var目录下文件总个数:\e[0m"
		find /var -type f | wc -l
	elif [ $num = 8 ]; then
		echo -e "\e[1;31m 请看结果:\e[0m"
		cat /etc/group | sort -t: -k3 -n | head | cut -d: -f1
	elif [ $num = 9 ]; then
		cat /etc/{fstab,issue} > /tmp/etc.test
		echo -e "\e[1;31m 请看结果:\e[0m"
		cat /tmp/etc.test
	elif [ $num = 10 ]; then
		groupadd -g 2016 distro
		useradd -u 1005 -g distro mandriva
		useradd -u 1100 -d /home/linux mageia
		echo "mageedu" | passwd --stdin mageia &>/dev/null
		userdel mandiriva
		useradd -u 2002 -g distro -G peguin slackware
		chsh slackware -s /bin/tcsh &>/dev/null
		groupadd admins && usermod -G admins slackware -a slackware
		echo "mageedu" | passwd --stdin slackware && chage -m3 -M180 -W 3 loongson &>/dev/null
		useradd -u 3003 -g clouds -G peguin -G nova openstack
		useradd -s /sbin/nologin mysql
		echo "mageedu" | passwd --stdin openstack &>/dev/null
	fi
done


THE END

.

.

.

原创文章,作者:勇爷,如若转载,请注明出处:http://www.178linux.com/24045

(0)
勇爷勇爷
上一篇 2016-07-16 22:28
下一篇 2016-07-16 22:29

相关推荐

  • linux 学习总结第二周

    1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。    常用的文件管理类工具:cp,mv,rm     命令cp用于文件拷贝,分为单源文复制和多源复制 单源复制语法:cp [options]…[-t] source dest 。 注意事项: 1如果dest不存在,则事先创建此文件…

    Linux干货 2016-12-04
  • 显示历史命令时间

        历史命令中默认是不显示时间的,如果我们想要在使用history命令时显示时间可以通过设置环境变量来实现。     HISTTIMEFORMAT变量的具体参数与date命令中的类似,可以参数date命令的对日期时间格式时行修改。    &nbs…

    Linux干货 2015-05-02
  • 新开始

    把握新的一切

    Linux笔记 2018-06-19
  • 十.Linux博客-2016年8月12日变量、算术表达式、测试

    格式说明: 操作 概念 命令 说明及举例 十.变量、算术表达式、测试 bash -n +脚本 检查语法错误 .bash_profile 配置文件PATH=$PATH:$HOME/bin:. 加.方便但不安全 unset name 删变量name 小驼峰 第一个单词字母小写,以后单词首字母大写大驼峰 每一个单词首字母都大写 set…

    Linux干货 2016-08-24
  • Linux下各类颜色文件的意思

    Linux下各类颜色文件的意思   Linux系统对在终端下的各文件进行了颜色区分,了解各个颜色文件对应的意思对是学习Linux必须要掌握的。Linux文件颜色如下图: 1、白色:表示普通文件(-) 2、蓝色:表示目录(d) 3、绿色:表示可执行文件(-) 4、红色:表示压缩文件(-) 5、浅蓝色:链接文件(l) 6、黄色:表示设备文件(c) 7、…

    Linux干货 2016-10-18
  • shell 脚本 【上】

    shell 脚本编程 【上】 程序就是指令加上数据组合而成 程序编程风格:  过程式:以指令为中心,数据服务于指令  象式:以数据为中心,指令服务于数据  编程语言:  低级:汇编  高级:  编译:高级语言–>编译器–>目标代码 java,C#  解释…

    Linux干货 2016-08-15

评论列表(1条)

  • 马哥教育
    马哥教育 2016-07-16 22:40

    可以啊,勇爷,写的很好,非常棒,加油