马哥教育网络班21期第9周课程练习

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

#!/bin/bash
#
declare -i nologin_user;other_user
all_users=`awk -F':' '{print $1}' /etc/passwd`
for uesr_test in $all_users;do
  if [ /sbin/nologin == awk -F':' '{print $6}' ];then
    nologin_user++
  else
    other_user++
  fi
done
echo "The nologin user is $nologin_user"
echo "The other user is $other_user"

2、写一个脚本

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

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

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

#!/bin/bash
#
hostname=`hostname|cut -d'.' -f1`
[ $hostname == localhost] && hostname=www.magedu.com || echo $hostname

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

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

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

#!/bin/bash
#
if [ $# lt 1 ];then
  echo "At least one device path!"
  exit
else
  for i in $*;do
    if `fdisk -l $i &> /dev/null`;do
      fdisk -l $i | grep ^/dev
    else
      echo "The path $i does not exist!"
    fi
  done
fi

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

   脚本能够接受一个参数;

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

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

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

#!/bin/bash
#
if [ $# -lt 1 ];then
    echo "At lesat one argument."
    exit 0
fi
case $1 in
quit)
    echo "exit..."
    exit 0
    ;;
yes)
    echo "continue..."
    ;;
*)
    exit 1
    ;;
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 [ $# -lt 1 ];then
echo "At lesat one argument in gzip/bzip2/xz"
exit 0
fi
case $1 in
gzip)
    tar -czvf /backups/etc-`date +%Y%m%d`.tar.gz /etc/
    ;;
bzip2)
    tar -cjvf /backups/etc-`date +%Y%m%d`.tar.bz2 /etc/
    ;;
xz)
    tar -cJvf /backups/etc-`date +%Y%m%d`.tar.xz /etc/
    ;;
*)
    echo "Error for tools..."
    exit 1
    ;;
esac

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

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

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

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

   (4) 其它为无法判断;

#!/bin/bash
#
if [ $# -lt 1 ];then
    echo "At lesat one PATH"
    exit 0
fi
if [ -f $1 ];then
    echo "Can be Access!"
elif [ -d $1 ];then
    echo "Can be cd!"
elif [ -L $1 ];then
    echo "A PATH to Access!"
else
    echo "unkown!"
    exit 1
fi

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

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

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

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

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

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

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

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

#!/bin/bash
if [ $# -ne 1 ];then
    echo "Input one user"
    exit 0
elif ! id $1 &> /dev/null;then
    echo "Not Exsit user"
    exit 0  
fi

uid01=`grep ^$1 /etc/passwd | awk -F':' '{print $3}'`

if [ $uid01 -eq 0 ];then
    echo "Administrater"
elif [ $uid01 -gt 0 -a $uid01 -lt 500 ];then
    echo "System user"
else
    echo "Common user"
fi

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

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

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

#!/bin/bash
if [ $# -ne 1 ];then
    echo "Input one user"
    exit 0
elif ! id $1 &> /dev/null;then
    echo "Not Exsit user"
    exit 0  
fi

uid01=`grep ^$1 /etc/passwd | awk -F':' '{print $3}'`
sh01=`grep ^$1 /etc/passwd | awk -F':' '{print $7}'`
sh02=${sh01: -2}
if [ $uid01 -eq 0 -a $sh02 == "sh" ];then
    echo "a user can log system."
else
    echo "can not log system."
fi

11、写一个脚本,完成如下任务 :

   (1) 按顺序分别复制/var/log目录下的每个直接文件或子目录至/tmp/test1-testn目录中;

   (2) 复制目录时,才使用cp -r命令;

   (3) 复制文件时使用cp命令;

   (4) 复制链接文件时使用cp -d命令;

   (5) 余下的所有类型,使用cp -a命令;

#!/bin/bash
#
dir=/tmp/test1-testn
file=`ls /var/log`
mkdir /tmp/test1-testn
for i in $file;do
    if [ -d $i ];then
        /bin/cp -r $i $dir
    elif [ -f $i ];then
        /bin/cp $i $dir
    elif [ -L $i ];then
        /bin/cp -d $i $dir
    else
        /bin/cp -a $i $dir
    fi
done

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

(0)
上一篇 2016-09-19 13:47
下一篇 2016-09-19 13:47

相关推荐

  • 初识操作系统和linux

    初识操作系统和linux 1.计算机系统由硬件系统和软件系统两大部分组成:是一种能接收和存储信息,并按照存储在其内部的程序对海量数据进行自动、高速地处理,然后把处理结果输出的现代化智能电子设备。   2.世界上第一台计算机是1946年诞生在美国宾州大学。   3.冯·诺依曼体系结构:1946年数学家冯·诺依曼于…

    Linux干货 2017-02-14
  • RAID详解

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

    Linux干货 2017-01-03
  • RAID 0 软件实现

    RAID 0 软件实现        RAID 0又称为Stripe或Striping,它代表了所有RAID级别中最高的存储性能。RAID 0提高存储性能的原理是把连续的数据分散到多个磁盘上存取,这样,系统有数据请求就可以被多个磁盘并行的执行,每个磁盘执行属于它自己的那部分数据请求。这种数据上的并行…

    Linux干货 2017-05-02
  • Nginx4大模块——proxy、headers、upstream、stream模块

    Nginx 应用程序发布: 灰度模型:          (1) 如果存在用户会话;              从服务器上拆除会话;   &…

    Linux干货 2016-10-29
  • 8.9作业

    删除/etc/grub2.conf文件中所有以空白开头的行,行首的空白字符 [root@English6 ~]# sed "s@^[[:space:]]\+@@" /etc/grub.conf  # grub.conf generated by an…

    Linux干货 2016-08-11
  • 三次握手和四次挥手

    TCP三次握手:                              &n…

    2017-09-02

评论列表(3条)

  • 马哥教育
    马哥教育 2016-09-19 18:08

    1题不对,在仔细看看你的判断条件

    • N21-孟然
      N21-孟然 2016-09-20 09:20

      @马哥教育确实有误,未验证 if [ /sbin/nologin == awk -F’:’ ‘{print $6}’ ];then

  • N21-孟然
    N21-孟然 2016-09-20 09:29

    修改:
    if [ /sbin/nologin == `grep ^$usertest /etc/passwd | awk -F’:’ ‘{print $7}’ ` ];then