N21沉舟第九周作业

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

方法一:

#!/bin/bash    
    #
    declare -i nologinuser=0
    declare -i loginuser=0
    while read line;do
    if echo $line |grep 'nologin';then
          let nologinuser+=1
    else
         let loginuser+=1
        fi
    done</etc/passwd
    echo "nologinuser:$nologinuser"
    echo "loginuser:$loginuser"
方法二:
    #!/bin/bash
    #
    declare -i nologinuser=0
    declare -i loginuser=0
    while read line;do
     if [ `echo $line|cut -d: -f7` == '/sbin/nologin' ];then
    let nologinuser+=1
    else
     let loginuser+=1
       fi
    done</etc/passwd
    echo "nologinuser:$nologinuser"
    echo "loginuser:$loginuser"

2、写一个脚本
    (1) 获取当前主机的主机名,保存于hostname变量中;
    (2) 判断此变量的值是否为localhost,如果是,则将当前主机名修改为www.magedu.com;
    (3) 否则,则显示当前主机名;

#!/bin/bash
#
hostname=$HOSTNAME
if [ $hostname == "localhost" ];then
    HOSTNAME="www.magedu.com"
else
    echo $HOSTNAME
fi

3、写一个脚本,完成如下功能
    (1) 传递一个磁盘设备文件路径给脚本,判断此设备是否存在;
    (2) 如果存在,则显示此设备上的所有分区信息;

        #!/bin/bash        
        #
        read -p "please input a devfile:" devfile
        if [ -e $devfile ];then
             fdisk -l $devfile
        else
            echo "This devfile is not exist"
        fi

4、写一个脚本,完成如下功能
   脚本能够接受一个参数;
   (1) 如果参数1为quit,则显示退出脚本,并执行正常退出;
   (2) 如果参数1为yes,则显示继续执行脚本;
   (3) 否则,参数1为其它任意值,均执行非正常退出;

#!/bin/bash
#
if [ $# -eq 0 ];then
    echo "need a argument."
    exit 0
fi
case $1 in 
quit)
  echo "scrpits is quit!"
  exit 0
 ;;
yes)
  echo "scripts is runing"
  ;;
*)
  exit 2
;;
esac

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
#
if [ $# -eq 0 ];then
    echo "please choose one from  gzip,bzip2,xz."
    exit 0
fi
case $1 in 
gzip)
   tar -zcvf  /backups/etc-`date +%Y%m%d`.tar.gz /etc  
 ;;
bzip2)
   tar -jcvf  /backups/etc-`date +%Y%m%d`.tar.gz2 /etc  
  ;;
xz)
   tar -Jcvf  /backups/etc-`date +%Y%m%d`.tar.xz /etc 
;;
*)
   echo "choose a wrong tools."
  exit 2
;;
esac

6、写一个脚本,接受一个路径参数:
   (1) 如果为普通文件,则说明其可被正常访问;
   (2) 如果是目录文件,则说明可对其使用cd命令;
   (3) 如果为符号链接文件,则说明是个访问路径;
   (4) 其它为无法判断;

#!/bin/bash
#
if [ $# -eq 0 ];then
    echo "please input a file path."
    exit 0
fi
if [ -L $1 ];then
    echo "$1 is a links path."
elif [ -f $1 ];then
    echo "you can visit this file."
elif [ -d $1 ];then
    echo "you can use cd command on $1."
else 
    echo "I don't understand you mean."
fi

7、写一个脚本,取得当前主机的主机名,判断
   (1) 如果主机名为空或为localhost,或为"(none)",则将其命名为mail.magedu.com;
   (2) 否则,显示现有的主机名即可;

#!/bin/bash
#
if [-z "$HOSTNAME" -o "
$HOSTNAME"
 == "localhost" -o "$HOSTNAME" == "(none)" ];then
    HOSTNAME="mail.magedu.com"
else
    echo $HOSTNAME
fi

8、写一脚本,接受一个用户名为参数;
   (1) 如果用户的id号为0,则显示其为管理员;
   (2) 如果用户的id号大于0且小于500, 则显示其为系统用户;
   (3) 否则,则显示其为普通用户;

        #!/bin/bash        
        read -p "input a user name:" username
        uid=$(grep "^$username" /etc/passwd |cut -d: -f3)
        if [ $uid -eq 0 ];then
        echo "this is root."
        elif [ $uid -gt 0 -a $uid -le 500 ];then
        echo "this is a system user."
        else 
        echo "this is a common user."
        fi

10、写一个脚本,传递一个用户名参数给脚本;
   (1) 如果用户的id号大于等于500,且其默认shell为以sh结尾的字符串,则显示“a user can log system.”类的字符串;
   (2) 否则,则显示无法登录系统;

        #!/bin/bash        
        #
        read -p "input a user name:" username
        uid=$(grep "^$username\>" /etc/passwd |cut -d: -f3)
        usershell=$(grep "^$username\>" /etc/passwd |cut -d: -f7)
        if  
        [ $uid -eq 0 ];then
        echo "this is root."
         elif[ $uid -gt 0 -a $(echo $usershell|grep "sh$") ]
        ;then
               echo "
        a user can log system."
        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 [ -L $i ];then
     cp -d /var/log/$i /tmp/test1-testn/
     elif [ -d $i ];then
      cp -r /var/log/$i /tmp/test1-testn/
     elif [ -f $i ];then
      cp /var/log/$i /tmp/test1-testn/
     else
      cp -a /var/log/$i /tmp/test1-testn/
      fi
done

原创文章,作者:N21-沉舟,如若转载,请注明出处:http://www.178linux.com/41815

(0)
N21-沉舟N21-沉舟
上一篇 2016-08-30 15:49
下一篇 2016-08-30 15:49

相关推荐

  • 在马哥学习linux第一天的感受

         来马哥教育好几天了,昨天算是正式开始,在昨天早上,举行了开班典礼,各位老师助教为我们介绍了在马哥教育进行培训的相关注意事项,下午进行了两场测试,首先有一个摸底测试,不得不说我真的是太菜了,除了一些比较简单的题目我还有些把握,相当一部分我都是似曾相识,但是也不是很确定,还有很大一部分我根本听都没听说过,看到别人都写的满满…

    Linux干货 2017-07-11
  • N25第四周总结(lvm)

    lvm 详解 大纲:    1、什么是lvm     2、为什么要使用lvm     3、如何实现lvm     4、lvm各项命令详解   1、什么是lvm:        lmv (Logical Volume Manager…

    Linux干货 2016-12-22
  • RAID详解

    1、什么是RAID RAID:独立硬盘冗余阵列,旧称廉价磁盘冗余阵列,简称磁盘阵列。其基本思想就是将多个相对便宜的硬盘结合起来,成为一个磁盘阵列,是性能达到甚至超过一个昂贵、容量巨大的硬盘,根据选择的版本不同,RAID比单颗硬盘有以下一个或多个方面的好处:增强数据集成度,增强容错功能,增加处理量或容量。目前应用较多的有RAID0,RAID1,RAID4,RA…

    Linux干货 2017-01-03
  • 创建及管理KVM工具之virsh

    一、什么是虚拟化 虚拟化是一个广义的术语,在计算机方面通常是指计算元件在虚拟的基础上而不是真实的基础上运行。虚拟化技术可以扩大硬件的容量,简化软件的重新配置过程。 二、虚拟化能做什么 CPU的虚拟化技术可以单CPU模拟多CPU并行,允许一个平台同时运行多个操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。 三、虚拟化…

    Linux干货 2017-01-19
  • Linux下btrfs子卷的挂载

        对btrfs文件系统的补充:     btrfs文件手动挂载自不必多说,但若想btrfs文件系统开机自动挂载,该如何实现呢?     其实只需添加挂载选项即可,如下: UUID=c99895c8-5b14-4276-80c7-ecf…

    Linux干货 2015-12-19
  • N26_第一周

    计算机组成     CPU:核心部件:                 运算器: 对数据进行算术运算和逻辑运算     …

    Linux干货 2017-01-11

评论列表(1条)

  • 马哥教育
    马哥教育 2016-09-07 22:34

    脚本写得非常的漂亮,思路清晰,需要注意一下脚本的缩进哈,加油!