马哥教育网络班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
下一篇 2016-07-16

相关推荐

  • N28-第二周

    1. Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。
    2. bash的工作特性之命令執行狀態返回值和命令行展開所涉及的內容及其示例演示。
    3. 請使用命令行展開功能來完成以下練習:
    (1) 創建/tmp目錄下的a_c、a_d、b_c、b_d。
    (2) 創建/tmp/mylinux目錄下的bin、boot/grub、dev、etc/rc.d/init.d、etc/sysconfig/network-scripts、lib/modules、
    lib64、proc、sbin、sys、tmp、usr/local/bin、usr/local/sbin、var/lock、var/log、var/run目錄。
    4. 如何查看文件的元數據,其信息有哪些,分別表示什麼含意?如何修改文件的時間戳信息?
    5. 如何定義一個命令的別名?如何在命令中引用另一個命令的執行結果?
    6. 顯示/var目錄下所有以L小寫開頭,以一個小寫字母結尾,且中間至少出現一位數字(可以有其它字符)的文件或目錄。
    7. 顯示/etc目錄下,以任意一個數字開頭,且以非數字結尾的文件或目錄。
    8. 顯示/etc目錄下,以非字母開頭,後面跟了一個字母以及其他任意長度任意字符的文件或目錄。
    9. 在/tmp目錄下創建以tfile開頭,後跟當前日期和時間的文件,文件名形如:tfile-2016-05-27-09-32-22。
    10. 複製/etc目錄下所有以p開頭,以非數字結尾的文件或目錄到/tmp/mytest1目錄中。
    11. 複製/etc目錄下所有以.d結尾的文件或目錄至/tmp/mytest2目錄中。
    12. 複製/etc目錄下所有以L小寫或m或n開頭,以.conf結尾的文件至/tmp/mytest3目錄中。

    Linux干货 2017-12-14
  • 新加磁盘的实现方法

    生产中硬盘会不断的出现故障此时我们就需要更换新的硬盘,那么拿到一个新的硬盘之后我们该如何来使用呢?一个新的硬盘首先我们要把旧硬盘上的东西进行备份然后用新的硬盘替代。新硬盘使用之前我们必须要先对新硬盘进行 分区—>创建文件系统—>挂载—>设置开机自启 这几个步骤,那么接下来我们一个一个来说明每个步骤的实现过…

    Linux笔记 2018-04-30
  • LVS+Keepalived实现负载均衡

    keepalived工作原理 keepalived是基于VRRP协议实现的保证集群高可用的一个服务软件,主要功能是实现后端真实服务器的故障隔离和负载均衡器间的失败切换,防止单点故障。 VRRP协议全称:虚拟路由冗余协议(Virtual Route Redundancy Protocol)。 keepalived安装 # yum install keepali…

    2017-11-26
  • 笔记二、如何在VMWare WorkStations安装CentOS6.8

    一、准备工作     1.安装VMWare WorkStatrion     2.准备好CentOS 6.8 镜像包     http://www.centoscn.com/CentosSoft/iso/    CenO…

    Linux干货 2017-02-14
  • echo命令的简单用法和实例

        在CentOS 6.8版本下,通过实例的形式,展现选项和参数的灵活运用,可以简明的了解echo的用法。 一、语法:echo [SHORT-OPTION]… [STRING]… ;echo [选项]…[参数]       作用:将需要的内容输出到终端或者其他文件。 二、实例和选项参数的用法: (1)文本…

    Linux干货 2017-03-27
  • GRUB启动故障排除和内核编译

    如何进入光盘应急系统(以下修复操作仅适用于GRUB legacy, 不适用于GRUB2): 步骤一:给主机挂上安装光盘, 或者有相应启动镜像的硬盘分区(可移动的分区) 步骤二:开机时选择CDROM先启动 步骤三:进入光盘启动界面选择应急救援模式 步骤四: 不选择设置网络接口, 直接读取磁盘分区并以读写方式挂载 步骤五: 选择shell进入bash中对磁盘进行…

    Linux干货 2016-09-12

评论列表(1条)

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

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