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

相关推荐

  • CentOS 6.5 LVM磁盘管理学习笔记

    在系统运维和服务器管理过程中,经常遇到服务器磁盘容量不足,需要在线扩容的情况。普通磁盘分区的管理方式在逻辑分区划好之后就无法改变其大小。而LVM可以实现Linux服务器下面磁盘空间的在线扩容和动态管理,相对于普通的磁盘分区有很大的灵活性。一、LVM简介    LVM是 Logical VolumeManager(逻辑卷管理)的简…

    Linux干货 2016-08-29
  • Bash的基础特性(二)

    Bash的基础特性(二) glob文件通配符 (* ; ? ; [ ] ; [^ ] ) 星号* 匹配任意所有字符的 [root@lyp ~]# ls h* hello.sh hello.shbak ?匹配单个字符 ls ???? 查看四个字符命名的文件 [0-9]匹配数字 [a-z] 字母 字母的顺序安装 a A b B c C… z Z 匹配的a-z […

    Linux干货 2017-04-01
  • 安全与加密、申请CA证书

    本章内容 v  1、安全机制  2、对称加密  3、不对称加密 4、散列算法  5、PKI 和CA v 在互联网数据传输的过程的,数据的安全私密性是及其重要的,所以就有数据的加密和解密的过程。 数据加密,是一门历史悠久的技术,指通过加密算法和加密密钥将明文转变为密文,而解密则是通过解密算法和解密密钥将密文恢复为明文。它…

    Linux干货 2016-12-04
  • 第一周作业-02

    Linux的命令格式 命令的语法通用格式:    ~]# COMMAND OPTIONS ARGUMENTS        COMMAND: 发起一命令:请求内核将某个二进制程序运行为一个进程;            程序 –&…

    Linux干货 2016-09-19
  • 正则表达式详解

    正则表达式详解

    2017-09-20
  • CentOS进程管理

    CentOS进程管理 笔记 Linux系统中的基本运行单位是进程,通过对系统系统中的进程的管理能够对系统的实时运行状态进行了解和调度。Linux中提供了用于查看、调整和停止进程的命令。本文仍然以RHEL6说明Linux系统的进程管理。 CentOS进程管理 一、进程概述 二、查看进程 1、使用ps命令 2、top命令 一、进程概述 程序是保存在存储介质中的可…

    Linux干货 2017-05-15

评论列表(2条)

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

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

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

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