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

相关推荐

  • 逻辑卷管理器(LVM)-介绍

    逻辑卷管理器(LVM) §·逻辑卷管理器LVM介绍 2 ※·LVM逻辑卷的简单描述 2 ※·LVM逻辑卷的好坏 2 ※·LVM结构组成部分 2 §·LVM的举例分析 3 ※·LVM设备名称 3 ※·LVM分区类型: 3 ※·LVM  PV相关命令 3 ※·LVM  VG相关命令 3 ※·LVM  LV 相关命令 3 ※·LVM …

    Linux干货 2016-08-29
  • N25期—第四周作业

    1、 复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。 cp –rf /etc/skel /home/tuser1 chmod -R go= /home/tuser1 2、 编辑/etc/group文件,添加组hado…

    Linux干货 2016-12-26
  • raid介绍及逻辑卷与逻辑卷快照应用

    高级文件系统管理 配置配额系统 综述 在内核中执行,以文件系统为单位启用,对不同组或者用户的策略不同,如将home单独分区,但是并不意味着每个用户都可以无上限使用该分区的空间,所以系统管理员要据块或者节点进行限制,限制每个用户使用磁盘的空间,当到达执行软限制( soft limit  )  会警报提醒用户;当硬限制( hard limit…

    Linux干货 2016-09-02
  • linux基础知识1

    Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。文件管理工具:cp,mv,rmcp命令:copy源文件:目标文件单源复制:cp [OPTION]… [-T] SOURCE DEST多源复制:cp [OPTION]… SOURCE… DIRECTORYcp [OPTION]… -t DIRECTORY SOURCE…单源复制:如果DES…

    2018-03-12
  • 马哥教育网络班22期+第5周课程练习 忍者乱太郎喻成

    1、显示当前系统上root、fedora或user1用户的默认shell;   以root为例 awk -F':' '$1 ~ /root/ {print $7} ' /etc/passwd 2、找出/etc/rc.d/…

    Linux干货 2016-10-09
  • awk应用和systemd

    一:练习 1、求每班总成绩和平均成绩 name class score wang   1    100 zhang  2    90 li     1    80 2、为编译安装的httpd服务,实现service unit文件 3、破解centos7 口令 …

    Linux干货 2016-09-22

评论列表(1条)

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

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