22期第九周课堂作业

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

#!/bin/bash
declare -i a=0
declare -i b=0
n=`cat /etc/passwd |cut -d: -f 7`
for i in $n;do
if [ $i == /sbin/nologin ];then
let a++
else
let b++
fi
done
echo "the nologin users number is": $a
echo "the login number users is": $b

    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
if [ $# -lt 1 ];then
  echo "please input in least one device"
 exit 2
fi
if [ -e $1 ];then
 fdisk -l $1
else
  echo "no such device"
fi

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

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

#!/bin/bash
read -p "pelase input a common quit/yes": a
if [ $a == quit ];then
  echo "exit script"
  exit 0
elif [ $a == yes ];then
  echo "script continue"
else
   echo "error agrument"
   exit 2
fi

    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 "please input in a common"
fi
if [ $1 == gzip ];then
 tar -zcf  /backups/etc-20160613.tar.gz /etc
elif [ $1 == bzip2 ];then
 tar -jcf /backups/etc-20160613.tar.bz2 /etc
elif [ $1 == xz ];then
 tar -Jcf /backups/etc-20160613.tar.xz /etc
else
  echo "argument error"
  exit 2
fi

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

       (4) 其它为无法判断;

if [ $# -lt 1 ];then
  echo "please input a url"
fi
if [ -L $1 ];then
  echo "this is a access url"
elif [ -d $1 ];then
  echo "can use cd common"
elif [ -f $1 ];then
  echo "normal access"
else
 echo "unknow"
fi

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

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

#!/bin/bash
hostname=`hostname`
if [ $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
a=`id -u $1`
if ! grep "^$1\>" /etc/passwd &> /dev/null; then
 echo "no such user"
elif [ $a -eq 0 ];then
 echo "this is root"
elif [ $a -lt 500 ];then
echo "this system user"
else
  echo "this regular user"
fi

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

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

#!/bin/bash
if [ $# -lt 1 ];then
  echo "please input a agarument"
  exit 2
fi
if ! grep "^$1\>" /etc/passwd &> /dev/null;then
 echo "no such user"
 exit 3
fi
a=`id -u $1`
b=`grep -o "^user1\>.*sh$" /etc/passwd |grep -o sh`
if [ $a -ge 500 ] && [ $b == sh ];then
  echo "a user can log system"
else
   echo "can not login"
fi

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

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

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

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

(0)
a295053193a295053193
上一篇 2016-10-17 08:36
下一篇 2016-10-17 08:36

相关推荐

  • 基于haproxy的全站https

          前一段时间新疆等地用户访问国务院官网,在首页上发现大量淫秽信息及广告,后反映给相关工作人员。经排查,并非是网站被劫持和入侵,而是运营商流量劫持导致的这个结果……此处且不论该时间后续事宜,作为一名优秀的运维工程师,我们面对运营商如此流氓的行为,应该怎么办? 当然是全站HTTPS了,目前,百度、阿…

    2017-05-18
  • CentOS启动流程

      我们介绍一下CentOS操作系统的详细启动流程,了解这些启动流程之后,我们可以实验做一个小型的Linux。 1、Linux的组成 2、Linux的运行环境 3、Linux的启动流程 3.1、POST加电自检 3.2、Boot Sequence(启动次序) 3.3、MBR 3.4、Kernel 3.5、init 1、Linux的组成 &…

    Linux干货 2016-12-04
  • sed使用方法

      sed编辑器被称作流编辑器(stream editor)。流编辑器在处理数据之前基于预先提供的一组规则来编辑数据流。 一、命令格式   sed options '"地址""编辑命令"' file   常用选项:     -n:静默模式,不显示模式…

    Linux干货 2015-12-28
  • Linux中的cut、sort、uniq以及用户(组)管理类指令应用示例

    Linux中的cut、sort、uniq指令 列出当前系统上所有已经登录的用户的用户名,注意:同一用户登录多次,只显示一次。 解决思路: 先使用who指令显示出所有已登录的用户。然后对who指令的输出进行切割得到想要的第一列内容,即只包含用户名。可以使用cut指令。最后对cut的结果进行排序并去重。可以使用sort指令。   借助管道符,可以方便的…

    Linux干货 2016-11-13
  • LVM详解

    目录:  一、概述  二、LVM的相关概念  三、概念图  四、LVM基本操作    1.创建PV    2.查看PV信息    3.创建VG    4.查看VG信息    5.创建LV    6.查…

    Linux干货 2015-09-22
  • linux发展史

    通过本篇文章,读者可以了解Linux的基本概念、历史、发展情况; 首先,我们通过简单的介绍Linux,了解什么是linux以及它的发展背景; 前言:操作系统介绍 内核负责控制硬件资源分配,而如果只有内核,则只能让计算机硬件运行,而不能有任何功能,因此需要系统调用提供给开发者使用,从而开发应用程序; 内核能够控制硬件,比如:让CPU可以运算、让硬盘可以读写数据…

    Linux干货 2016-10-14

评论列表(1条)

  • 马哥教育
    马哥教育 2016-10-25 13:17

    作业写的很好