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

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

#!/bin/bash
m=0
n=0
for i in `awk -F: '{print $NF}' /etc/passwd`
do
  if [[ "$i" = "/usr/sbin/nologin" ]];then
      let m+=1
  else
      let n+=1
  fi
done
echo "the shell is nologin :$m"
echo "the other is :$n"

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

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

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

#!/bin/bash
echo "please input a dev file:" 
read DEV
ls -l /dev|grep $DEV &> /dev/null
if [ $? -eq 0 ];then
  fdisk -l /dev/$DEV
else
  exit 100
fi

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

#!/bin/bash
case $1 in
quit)
    echo "exit this script"
    exit 0
    ;;
yes)
    echo "continue..."
    ;;
*)
   exit 127
    ;;
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
echo "please select one opthion in (gzip/bzip2/xz):"
read OPTION
if [ ! -d /backups/ ];then
    mkdir /backups
fi
case $OPTION 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 cvf /backups/etc-`date +%Y%m%d`.tar /etc/
    xz -z /backups/etc-`date +%Y%m%d`.tar
    ;;
*)
    exit 127
    ;;
esac

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

#!/bin/bash
echo "please input a path"
read PATH
if [ -d $PATH ];then
   echo "This is a directory.You can apply the 'cd' on it."
elif [ -f $PATH ];then
   echo "This a regular file.You can access it normally."
elif [ -L $PATH ];then
   echo "This is a path to others"
else
   echo "Sorry,I can't make it"
fi

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

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

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

#!/bin/bash
echo "please input the username:"
read p
  a=`grep ^"\b${p}\b" /etc/passwd|cut -d: -f3`
echo $a
if [ $a -eq 0 ];then
    echo "hello,administrater"
elif [ $a -gt 0 -a $a -lt 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
echo "please input the username:"
read p
  a=`grep ^"\b${p}\b" /etc/passwd|cut -d: -f3`
echo $a
  s=`grep ^"\b${p}\b" /etc/passwd|awk -F: '{print $NF}' |cut -d"/" -f3`
echo $s
if [ $a -ge 500 -a ${s:0-2} = "sh" ];then
    echo "a user can log system."
else
    echo "login denied"
fi

11、写一个脚本,完成如下任务 :
   (1) 按顺序分别复制/var/log目录下的每个直接文件或子目录至/tmp/test1-testn目录中;
   (2) 复制目录时,才使用cp -r命令;
   (3) 复制文件时使用cp命令;
   (4) 复制链接文件时使用cp -d命令;
   (5) 余下的所有类型,使用cp -a命令;

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

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

(0)
ππ
上一篇 2016-09-15
下一篇 2016-09-15

相关推荐

  • grep,egrp,fgrep 命令与正则表达式

    一 简介     grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。 Unix的grep家族包括grep、egrep和fgrep…

    Linux干货 2016-01-19
  • 第三周博客作业

    1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 [root@localhost ~]# who (unknown) :0           2016-12-15 2…

    Linux干货 2016-12-20
  • 【Linux基础】计算机及操作系统基础

    【Linux基础】计算机及操作系统基础 计算机的组成及其功能 计算机的组成 简单来说,计算机应由两部分组成:第一部分:硬件 冯诺依曼结构体系 当前计算机主要是基于冯诺依曼体系结构设计的,在该体系中,计算机硬件由5个部件组成。分别是:运算器、控制器、存储器、输入设备和输出设备。而现今运算器和控制器一般集成在一起,叫中央处理器(Central Processin…

    Linux干货 2018-03-04
  • sed用法预习总结

    SED用法sed:Stream EDitor    行编辑器 sed:模式空间     默认不编辑原文件,仅对模式空间的数据做处理,将处理后的结果输出至屏幕 sed [options] 'AdressCommand' file…   &n…

    Linux干货 2016-08-10
  • 运维监控大数据的提取与分析

    本文内容整理来自【敏捷运维大讲堂】蒋君伟老师的线上直播分享。分别从以下3个维度来分享:1、云时代监控分析的窘境;2、使用标签标记监控数据的维度;3、监控数据应用场景。 云时代监控分析的窘境 在虚拟化与容器技术广泛应用的情况下,运维对象大规模地增长,监控平台每天存储的指标都以亿计,所以监控数据如今已经成了大数据。传统的监控工具在这种场景下,对于数据的提取分析,…

    系统运维 2017-01-09
  • 网络基础笔记

    网络管理笔记 1. 网络概念:     一组网络设备或计算机,通过无形的规则链接起来的体系!    2. 应用程序种类:     (1)批处理应用程序:            FTP、TFTP、库存更新    &nbsp…

    Linux干货 2017-03-16

评论列表(1条)

  • 马哥教育
    马哥教育 2016-09-19 17:39

    输入的时候可以直接用read -p ,1题不对