马哥教育网络班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)
Net20-deamonNet20-deamon
上一篇 2016-08-08 22:56
下一篇 2016-08-09 11:48

相关推荐

  • MAN手册各章节功能及快捷键

    前言: man是manual的简称,中文说法可以是手册。而man手册分为不同的各个章节,每个章节保存这不通类型的手册。 各个章节功能:    Section 名称      说明 1 用户命令 可由任何人启动的 2 系统调用 即由内核提供的函数 3 例程   …

    Linux干货 2016-10-17
  • 计算机的组成及功能

    计算机的组成及功能 计算机的组成 计算机的组成,简单地来说,包含硬件和软件两部分,两者相辅相成,缺一不可。在计算机网络发展的今天,网络也已成为计算机不可或缺的一部分。 计算机硬件 可以分为如下5个部分: 控制器 负责对程序的控制信息进行分析,控制并协调输入、输出操作或内存访问,如CPU 运算器 负责数据的算术运算和逻辑运算,如C…

    Linux干货 2016-10-29
  • 在Linux中使用计算器遇到的问题

    进制转换的时候出现了与理解不同的结果

    Linux干货 2017-11-14
  • 内置数据结构,列表及其方法

    List:列表有若干个元素,元素可以是任意对象,元素有顺序,可以使用索引和迭代,使用线性结构,使用[ ]进行描述,在内存中的空间是连续的,每个元素在内存中的空间是一样的………列表是可变的,列表不能一开始就定义大小,列表索引不可以超界   列表索引l.index(),从左向右搜索,发现第一个匹配的,自动返回搜索的值的索引;匹配不到,抛出异常Value…

    Linux干货 2018-03-25
  • 第七周 练习

    1. 请描述网桥、集线器、二层交换机、三层交换机、路由器的功能、使用场景与区别。 集线器:集线器的主要功能是对接收到的信号进行再生整形放大,以扩大网络的传输距离网桥:是早期的两端口二层网络设备,用来连接不同网段。网桥的两个端口分别有一条独立的交换信道,      不是共享一条背板总线,可隔…

    Linux干货 2016-12-13
  • linux入门学习动手部分

    linux入门学习了几天,各种命令跟选项如果靠记忆很容易忘记,通过下面随堂实验加深记忆 实验操作部分 enable 命令使用 禁用内部命令 enable -n echo 禁用echo命令 重新启用echo命令 enable echo type 命令使用 type -a echo 列出所有echo的内部命令外部命令 type -p cd 显出cd外部命令的路径…

    Linux干货 2017-05-20

评论列表(2条)

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

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

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

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