马哥教育网络班20期+第九周博客作业

1、写一个脚本,判断当前系统上所有用户的shell是否为可登录shell(即用户的shell不是/sbin/nologin);分别这两类用户的个数;通过字符串比较来实现;

#!/bin/bash
export nolginbash
export otherbash
for i in `grep -o '[^/]*$' /etc/passwd`;do
	if [ $i == nologin ];then
		let nologinbash=$nologinbash+1
	else
		let otherbash=$otherbash+1
	fi
done
echo "nologin user sum is $nologinbash; other user sum is $otherbash"

2、写一个脚本

    (1) 获取当前主机的主机名,保存于hostname变量中;

    (2) 判断此变量的值是否为localhost,如果是,则将当前主机名修改为www.magedu.com;

    (3) 否则,则显示当前主机名

	#!/bin/bash
	hostname = `echo $HOSTNAME`
	if [ $hostname == localhost ];then
		sed -i 's/HOSTNAME=.*/HOSTNAME=www.magedu.com' /etc/sysconfig/network
	else
		echo $HOSTNAME
	fi

3、写一个脚本,完成如下功能

    (1) 传递一个磁盘设备文件路径给脚本,判断此设备是否存在;

    (2) 如果存在,则显示此设备上的所有分区信息;

	#!/bin/bash
	if [ -e $1 ];then
		fdisk -l $disk
	fi

5、写一个脚本,完成如下功能

   传递一个参数给脚本,此参数为gzip、bzip2或者xz三者之一;

   (1) 如果参数1的值为gzip,则使用tar和gzip归档压缩/etc目录至/backups目录中,并命名为/backups/etc-20160613.tar.gz;

   (2) 如果参数1的值为bzip2,则使用tar和bzip2归档压缩/etc目录至/backups目录中,并命名为/backups/etc-20160613.tar.bz2;

   (3) 如果参数1的值为xz,则使用tar和xz归档压缩/etc目录至/backups目录中,并命名为/backups/etc-20160613.tar.xz;

   (4) 其它任意值,则显示错误压缩工具,并执行非正常退出;

   #!/bin/bash
	cat << EOF
	==============
	gzip) tar -zcf
	bzip2) tar -jcf
	xz) tar -Jcf
	=============
	EOF
	case "$1" in 
	gzip)
		tar -zcf  /backups/etc-`date +%Y%m%d`.tar.gz  /etc
		;;
	bzip2)
		tar -jcf /backups/etc-`date +%Y%m%d`.tar.bz /etc
		;;
	xz)
		tar -Jcf /backups/etc-`date + %Y%m%d`.tar.xz /etc
		;;
	quit)
		echo "waring "
		exit 1
		;;
	esac

6、写一个脚本,接受一个路径参数:

   (1) 如果为普通文件,则说明其可被正常访问;

   (2) 如果是目录文件,则说明可对其使用cd命令;

   (3) 如果为符号链接文件,则说明是个访问路径;

   (4) 其它为无法判断;

   #!/bin/bash
	if [ -f $1 ];then
		echo This file can be normal access
	elif [ -d $1 ];then
		echo You can use the CD command
	elif [ -L $1 ];then
		echo This file is the access path
	else
		echo Unable to determine
	fi

7、写一个脚本,取得当前主机的主机名,判断

   (1) 如果主机名为空或为localhost,或为"(none)",则将其命名为mail.magedu.com;

   (2) 否则,显示现有的主机名即可;

   #!/bin/bash
	hostname=`echo $HOSTNAME`
	if [ $hostname == localhost -a $hostname == \(none\) -a -z $hostname ];then
		sed -i 's/HOSTNAME=*/HOSTNAME=mail.magedu.com' /etc/sysconfig/network
	else
		echo $HOSTNAME
	fi

8、写一脚本,接受一个用户名为参数;

   (1) 如果用户的id号为0,则显示其为管理员;

   (2) 如果用户的id号大于0且小于500, 则显示其为系统用户;

   (3) 否则,则显示其为普通用户;

   #!/bin/bash
	if [ `id -u $1` -eq 0 ];then
		echo "user $1 is administrator"
	elif [ `id -u $1` -le 500 ];then
		echo "user $1 is system user"
	else
		echo "user $1 is average user"
	fi

10、写一个脚本,传递一个用户名参数给脚本;

   (1) 如果用户的id号大于等于500,且其默认shell为以sh结尾的字符串,则显示“a user can log system.”类的字符串;

   (2) 否则,则显示无法登录系统;

	#!/bin/bash
	if [ `id -u $1` -ge 500 ];then
		if [ `grep -o 'sh$' /etc/passwd` == sh ];then
			echo a user can log system
		fi
	else
		echo a user can\'t log system
	fi	

11、写一个脚本,完成如下任务 :

   (1) 按顺序分别复制/var/log目录下的每个直接文件或子目录至/tmp/test1-testn目录中;

   (2) 复制目录时,才使用cp -r命令;

   (3) 复制文件时使用cp命令;

   (4) 复制链接文件时使用cp -d命令;

   (5) 余下的所有类型,使用cp -a命令;

	#!/bin/bash
	for i in `ls /var/log`;do
		if [ -d $i ];then
			cp -r /var/log/$i /tmp/test1-testn/
		elif [ -f $i ];then
			cp /var/log/$i /tmp/test1-testn/
		elif [ -L $i ];then
			cp -d /var/log/$i /tmp/test1-testn/
		else
			cp -a /var/log/$i /tmp/test-testn/
		fi
	done

原创文章,作者:Net20-deamon,如若转载,请注明出处:http://www.178linux.com/31872

(0)
上一篇 2016-08-08 22:56
下一篇 2016-08-09 11:48

相关推荐

  • Shell脚本之流程控制语句

    Shell脚本之流程控制语句 1、 if语句 (1)if 条件;then        action1 else        action2 fi  注意:shell里没有缩进要求。 (2)if 条件1;then   …

    Linux干货 2017-04-16
  • Linux系统中的防火墙iptables

    iptables/netfilter——Linux系统下的防火墙 基本原理 防火墙主要功能 工作于主机或者网络边缘,对进出本主机或本网络的报文进行匹配检测,对匹配到规则的报文进行于规则相对应的处理。 防火墙主要分类 按功能分类 主机防火墙网络防火墙 按构成分类 软件防火墙硬件防火墙 Linux防火墙软件iptables/netfilter(以后简称iptab…

    Linux干货 2017-06-13
  • 马哥教育网络班21期+第3周课程练习

    1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 //使用who命令列出列出当明显登录的所有用户,使用cut命令取出用户名,使用sort命令去重即可// [root@localhost ~]# who | cut -d' ' -f1…

    Linux干货 2016-08-08
  • puppet学习笔记

      一、Puppet基础原理: Puppet是一款使用GPLV2X协议授权的开源管理配置工具,用ruby语言开发,既可以通过客户端—服务器的方式运行,也可以独立运行。puppet可以为系统管理员提供方便,快捷的系统自动化管理。   二、puppet工作流程 1. 客户端 puppet-client 向 puppet-maste…

    Linux干货 2015-11-04
  • 磁盘分区和脚本练习

    1、创建一个10G分区,并格式为ext4文件系统 (1)要求其block大小为2048,预留空间百分比为2,卷标为MYDATA,默认挂载属性包含acl; mke2fs -t ext4 -b 2048 -m 2 -L MYDATA /dev/sdb5 tune2fs -o acl /dev/sdb5 (2)挂载至/etc/mydate目录,要求挂载时禁止自动运…

    Linux干货 2017-08-21
  • 文本处理三剑客之sed

    文本处理三剑客之sed sed概述 sed使用示例 sed的高级应用 sed概述 sed, 作为文本三剑客之一,其定位就是一个编辑器, 而且sed是一个流式编辑器(stream editor),其主要功能是过滤和转换文本。 sed – stream editor for filtering and&…

    Linux干货 2016-08-12

评论列表(2条)

  • 马哥教育
    马哥教育 2016-08-12 14:22

    写的很好,排版也很棒,加油,主机名那个是不是还要用hostname命令修改一下

    • Net20-deamon
      Net20-deamon 2016-08-15 11:35

      @马哥教育重启生效了!!!还需要hostname=????吗