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

相关推荐

  • 脚本编程之变量

    简单跟大家介绍一下脚本编程中的变量。 大家都知道,脚本编程,主要由三个部分组成,一是命令,二是变量,三是控制语句。 变量的使用,可以让脚本变得更加简洁,高效。 我们主要简单讲一下变量的概念,变量的类型,变量的种类,不同种类的变量是如何定义的,变量的基本操作,以及变量的配置文件。 了解了这些,我们还可以聊一聊变量的高级操作。 首先,什么是变量? 通俗一点讲:变…

    Linux干货 2017-04-17
  • CentOS7中nmcli网络管理及使用详解

    一、网络接口配置工具    在CentOS7系统中,强烈推荐使用nmcli管理网卡。下面记录的是nmcli的使用详解。    网络接口配置工具NetworkManager(简称为nmcli),该命令的作用是:可以查询网络连接的状态,也可以用来管理网络(设置系统每个网卡的特性)。该命令如何使用呢,其实可以用"n…

    Linux干货 2016-09-11
  • 网络管理之虚拟网卡实现一个网卡多个地址

    一.概述 在虚拟机中实现一个网卡多个地址 完成这个功能之前需要先关闭NetworkManager功能(在centos 6系统)         chkconfig NetworkManager off   而且我们要实现虚拟网卡一个网卡多个地址只是对虚拟机有用 网卡别名…

    Linux干货 2016-09-16
  • ping命令的部分用法

    Linux系统的ping命令是常用的网络命令,它通常用来测试与目标主机的连通性,我们经常会说“ping一下某机器,看是不是开着”不能打开网页时会说“你先ping网关地址192.168.1.1试试”。它通过发送ICMP ECHO_REQUEST数据包到网络主机(send ICMP ECHO_REQUEST to&nbsp…

    Linux干货 2017-07-30
  • 关于大型网站技术演进的思考(十三)–网站静态化处理—CSI(5)

    原文出处: 夏天的森林   讲完了SSI,ESI,下面就要讲讲CSI了 ,CSI是浏览器端的动静整合方案,当我文章发表后有朋友就问我,CSI技术是不是就是通过ajax来加载数据啊,我当时的回答只是说你的理解有点片面,那么到底什么是CSI技术了?这个其实要和动静资源整合的角度来定义。 CSI技术其实是在页面进行动静分离后,将页面加…

    2015-03-11
  • N25 – Week6 作业

    春节过去了,我们又开学了,又可以写博客,做作业了,好开心. 下面是第6周的博客作业: 请详细总结vim编辑器的使用并完成以下练习题: 1. 复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc/sysinit文件中的以至少一个空白字符开头的行的行首加#; [root@dhcp-10-129-6-166 ~]# …

    Linux干货 2017-02-13

评论列表(1条)

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

    作业写的很好