Linux基础之shell脚本编程(三)

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

  1 #!/bin/bash
  2 #author:BaoZhang
  3 #
  4 login_user=0
  5 nologin_user=0
  6 for i in $(cat /etc/passwd | cut -d: -f7)
  7 do
  8   if [ $i == "/bin/bash" ];then
  9     let login_user++
 10   else
 11     let nologin_user++
 12   fi
 13 done
 14 echo "login user number:$login_user"
 15 echo "no login user number:$nologin_user"

2、写一个脚本

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

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

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

  1 #!/bin/bash
  2 #autho:BaoZhang
  3 #
  4 HOSTNAME=$(/bin/hostname)
  5 if [ $UID -eq 0 ];then
  6  if [ $HOSTNAME == "localhost" ];then
  7     hostname "www.magedu.com"
  8     echo 'hostname changed'
  9  else
 10     hostname
 11  fi
 12 else
 13   echo "you must be root to change the host name"
 14   exit 1
 15 fi

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

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

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

  1 #!/bin/bash
  2 #author:BaoZhang
  3 #
  4 if [ $UID -eq 0 ];then
  5   if [ $# -ne 1 ];then
  6     echo "invalid argument "
  7     exit 2
  8   else
  9     #ls $1 &>/dev/null
 10     if [ -d $1 ];then
 11       echo "$1 exist,something about $1:"
 12       df -h $1
 13     else
 14       echo " device $1 not exist"
 15       exit 3
 16     fi
 17   fi
 18 else
 19   echo "you must be root to open the device "
 20   exit 1

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

   脚本能够接受一个参数;

   (1) 如果参数1为quit,则显示退出脚本,并执行正常退出;

   (2) 如果参数1为yes,则显示继续执行脚本;

   (3) 否则,参数1为其它任意值,均执行非正常退出;

  1 #!/bin/bash
  2 if [ $# -ne 1 ];then
  3   echo "invalid argument,exit"
  4   exit 2
  5 else
  6   case $1 in
  7   "quit")
  8     echo "quiting...."
  9     exit 0
 10    ;;
 11 
 12    "yes")
 13      echo "continuing...."
 14      exit 0
 15    ;;
 16    *)
 17      echo "interrupt...."
 18      exit 3
 19    esac
 20 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) 其它任意值,则显示错误压缩工具,并执行非正常退出;

 1 #/bin/bash 
  2 #author:BaoZhang
  3 #
  4 if [ $# -ne 1 ];then
  5   echo "invalid argument, exit ..."
  6   exit 1
  7 else
  8   case $1 in
  9     "gzip")
 10        tar -zcvf /backups/etc.`date +"%Y%m%d"`.tar.gz /etc &>/dev/null
 11        echo "use gzip compreed"
 12        exit 0
 13      ;;
 14     "zip2")
 15        tar -jcvf /backup/etc.`date +"%Y%m%d"`.tar.bz2 /etc &>/dev/null
 16        echo "use zip2 compreed"
 17        exit 0
 18      ;;
 19     "xz")
 20        tar -Jcvf /tmp/etc.`date +"%Y%m%d"`.tar.xz /etc &>/dev/null
 21        echo "use xz compreed"
 22        exit 0
 23      ;;
 24     *)
 25        echo "invalid compress tools"
 26        exit 3
 27   esac
 28 fi

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

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

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

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

   (4) 其它为无法判断;

  1 #!/bin/bash
  2 #author:BaoZhang
  3 #
  4 if [ $# -ne 1 ];then
  5   echo "invalid argument, one argument"
  6   exit 1
  7 else
  8   if [ -f $1 ];then
  9     echo "general file,you can use ls ...."
 10   elif [ -d $1 ];then
 11     echo "folder,you can use cd ....."
 12   elif [ -L $1 ];then
 13     echo "symbolic link file.........."
 14   else
 15     echo "sorry, i can not judge..."
 16   fi
 17 fi

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

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

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

  1 #!/bin/bash
  2 #author:BaoZhang
  3 #
  4 HOSTNAME=$(hostname)
  5 if [ $UID -eq 0 ];then
  6   if [ -z "$HOSTNAME" -o "$HOSTNAME" = "(none)" ]; then
  7     HOSTNAME=mail.magedu.com
  8   else
  9     echo "hostname:$HOSTNAME"
 10   fi
 11 else
 12   echo "your permission only read....."
 13   echo "hostname: $HOSTNAME"
 14 fi
 15

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

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

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

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

  1 #!/bin/bash
  2 #author:BaoZhang
  3 #
  4 if [ $# -ne 1 ];then
  5   echo "invalid arument, usage:$0 argument "
  6   exit 1
  7 else
  8   id $1  &>/dev/null
  9   if [ $? -eq 0 ];then
 10     number=$(id -u $1)
 11     if [ $number -eq 0 ];then
 12       echo "sys admin...."
 13     elif [ $number -gt 0 -a $number -lt 500 ];then
 14       echo "sys user....."
 15     else
 16       echo "comm user...."
 17     fi
 18   else
 19     echo "user $1 not exist..."
 20   fi

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

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

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

  1 #!/bin/bash
  2 #author:BaoZhang
  3 #
  4 if [ $# -ne 1 ];then
  5   echo "argument invalid,usage:$0 arguement"
  6   exit 1
  7 else
  8   id $1 &>/dev/null
  9   if [ $? -eq 0 ];then
 10     cat /etc/passwd | grep $1 | cut -d: -f7 | grep "sh$" &>/dev/null
 11     if [ $? -eq 0 ];then
 12       echo "$1:a user can login system..."
 13     else
 14       echo "$1 : can not login system..."
 15     fi
 16   else
 17      echo "$1 not exist..."
 18   fi
 19 fi

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

赞 (0)
zhangbaozhangbao
上一篇 2016-11-20 01:24
下一篇 2016-11-20 14:50

相关推荐

  • 误删除centos6.8内核修复全过程

    关于误删除系统内核或内核损坏修复教程,本教程主要详细描述系统内核或内核损坏修复过程中步骤详解 一.操作环境 硬件:华硕笔记本 软件:VMware Workstation Pro 12版本  Centos 6.8.iso镜像 二,修复步骤 第一步,我们先要挂载centos6.8的镜像,然后光盘启动 进入系统救援模式 进入当前系统的根目录 我们需要手动…

    Linux干货 2016-09-05
  • linux基础知识:文件管理,bash特性

    本文简要介绍了文件类的管理命令,包括mv、cp、mkdir等等。还介绍了一些万用字符的用法。

    2017-12-12
  • httpd功能配置之访问控制

       httpd服务可以实现对资源访问控制,可以根据IP地址和用户两种方式进行控制。    一、用户认证控制      1、在站点根目录下创建一个目录及一个页面文件      2、修改/var/httpd/conf/httpd.conf文件   &n…

    Linux干货 2016-03-11
  • 笔记四、Linux基础入门-上半部

    前言 直接已经教大家如何创建虚拟机和安装CentOS 操作系统了,那么今天就来开始入门吧。linux对于新手来说并不难,linux的构造 http://www.178linux.com/68853 这篇博客里我已经讲解了,有兴趣最好看一下llinux下每个目录的作用。还有Linux的哲学思想。 这里我就开始介绍了。 一、用户登陆   &n…

    2017-02-23
  • Linux之任务计划 crontab

    Linux之任务计划    用过windows的同学应该都知道在控制面板中有一个“任务计划”选项,我们可以通过向导设置让计算机在某个时间点或者开机时运行某个脚本或者批处理等等,方便我们的日常管理监视工作;同样在Linux系统中,如果我们想在开机时就运行某个操作,可以直接将命令写入/etc/rc.local中,该操作就会在机器开机时运行;如…

    Linux干货 2015-05-18
  • 用户操作详解(附图)

                    关于用户和组的基本操作命令     在linux的操作系统中,对于用户以及组的配置是及其常用的和重要的,其中包括了对于用户的添加,删除以及修改用户的…

    Linux干货 2016-08-05

评论列表(1条)

  • 马哥教育
    马哥教育 2016-11-30 21:18

    看得出扎实的脚本基本功。再接再励~