马哥教育网络班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

相关推荐

  • linux 查找过滤及用户和组管理命令的一些事例

    1.列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 ~]# who | cut -d' ' -f1 | sort | uniq 2.列出最后登录到当前系统的用户的相关信息。 ~]# last | head -1 3.列出当前系统上被用户当作其默认shell的最多的那个shell。  ~]#…

    Linux干货 2016-10-05
  • Nginx

        Nginx(发音同engine x)是一个 Web服务器,也可以用作反向代理,负载平衡器和 HTTP缓存。Nginx 可以部署在网络上使用 FastCGI,脚本,SCGI 处理程序,WSGI 应用服务器或 Phusion 乘客模块的动态 HTTP 内容,并可作为软件负载均衡器。Nginx 使…

    Linux干货 2017-08-29
  • 网络yum源的配置

    1.准备: 光盘 包 元数据 2.网络服务http(s)  ftp 查看是否安装  which  vsftp;  ls  /misc/cd/Packages | grep vsftpd 安装  rpm  -ivh  /misc/cd/Packages/vsftpd… …

    2017-06-13
  • Centos7基于虚拟主机的Lamp配置bbs、Blog、PhpMyAdmin应用程序

    Centos7实现基于虚拟主机的各应用程序搭建: 一、配置三个基于名称的虚拟主机;      (a) discuzX      (b) wordpress      (c) https: phpMyAdmin 1.安装Lamp环境及安装mo…

    Linux干货 2016-10-09
  • Linux命令date命令详解

    在linux环境中,熟练运用date命令来表示自己想要表示的时间,肯定可以给自己的工作带来诸多方便,下面是详细的使用说明和示例 在linux环境中,不管是编程还是其他维护,时间是必不可少的,也经常会用到时间的运算,熟练运用date命令来表示自己想要表示的时间,肯定可以给自己的工作带来诸多方便。 1.命令格式:date[参数]… [+格式] 2.命…

    2017-07-18
  • Linux终端类型

      2016-10-16  19:29:36  Linux终端类型   基本概念:  Linux终端其实就是用户与操作系统之间的一个接口,用户通过终端与操作系统进行交互。 在Linux系统终端包括以下几种: 1、控制台终端(Terminal)它的文件路径(/dev/console) (物理终端直接连接键盘和鼠…

    Linux干货 2016-10-17

评论列表(2条)

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

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

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

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