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:48
下一篇 2016-08-30

相关推荐

  • PHP高效率写法(详解原因)

    1.尽量静态化:    如果一个方法能被静态,那就声明它为静态的,速度可提高1/4,甚至我测试的时候,这个提高了近三倍。   当然了,这个测试方法需要在十万级以上次执行,效果才明显。   其实静态方法和非静态方法的效率主要区别在内存:静态方法在程序开始时生成内存,实例方法在程序运行中生成内存,所以静…

    Linux干货 2015-05-28
  • 计算机的一些简单认识

      完整的计算机系统包括硬件和软件两大部分,硬件是指计算机系统中的各种看得见摸得着的物理装置。例如主板,网卡,显示器等。软件是指计算机运行所以需要的各种程序。例如操作系统:linux,windows。办公软件office等等。可以这样理解为软件是对硬件功能通过复杂的编程封装,让人们得以实现计算机应用于生活。 早期的计算机: 英国曼彻斯特科学工业博物…

    2017-09-11
  • 文件查看和正则表达式

    文件查看工具         cat,tac,rev,more,less,head,tail cat:查看文本          cat [OPTION]… [FILE]… &…

    Linux干货 2016-08-07
  • 磁盘管理之文件系统

    一,概述 文件系统是操作系统用于明确存储设备或分区上的文件的方 法和数据结构;即在存储设备上组织文件的方法。操作系统 中负责管理和存储文件信息的软件结构称为文件管理系统, 简称文件系统。  从系统角度来看,文件系统是对文件存储设备的空间进行组 织和分配,负责文件存储并对存入的文件进行保护和检索的 系统。具体地说,它负责为用户建立文件,存入、读出、修…

    Linux干货 2016-09-05
  • 94-varnish

        一. Web Page Cache 相关概念

    2016-11-18
  • 例图分析软、硬链接

    在linux系统中存在两种链接方式硬链接和软连接,两种链接方式在系统中是完全不同的模式,本文主要详述两种的区别并给与图示; 创建guo ,lin两个文件,两个文件分别用于演示软连接和硬链接     图一:创建文件   创建软连接guo.ruan1     图二:创建软连…

    Linux干货 2016-10-29

评论列表(1条)

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

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