N25-Week9

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

#! /bin/bash#写一个脚本,判断当前系统上所有用户的shell是否为可登陆shell(即用户的shell不是/sbin/nologin);#分别统计这两类用户的个数#通过字符串比较来实现##declare NO_LOGIN_SHELL=0declare LOGIN_SHELL=0for i in `cat /etc/passwd | cut -f 1 -d :`; do        USR_SHELL=`grep "^$i" /etc/passwd | cut -f 7 -d :`        if [[ $USR_SHELL == /sbin/nologin ]];then                let NO_LOGIN_SHELL=$NO_LOGIN_SHELL+1        else                let LOGIN_SHELL=$LOGIN_SHELL+1        fidoneecho  -e "total NO LOGIN SHELL are $NO_LOGIN_SHELL.\ntotal LOGIN SHELL is $LOGIN_SHELL"

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

#! /bin/bash
#a. 获取当前主机的主机名,保存于hostname变量中
#b. 判断此变量的值是否为localhost, 如果是,则将当前主机名修改为www.magedu.com
#c. 否则,怎显示当前主机名
#
#
#

_hostname=`hostname`
if [[ $_hostname == "localhost" ]]; then
        hostname www.magedu.com
        echo $HOSTNAME
else
        hostname
fi

3. 写一个脚本
a. 传递一个磁盘设备文件路径给脚本,判断此设备是否存在
b. 如果存在,则显示此设备上所有分区信息

#! /bin/bash

[ $# -ne 1 ] && echo "需要一个磁盘设备" && exit 1

if [ -b $1 ]; then
        if ls /dev/{r,l}* | grep $1;then
                echo "您输入的为内存或回环设备"
                exit 100
        else
                fdisk -l $1
        fi
else
        echo "没有此磁盘设备,请重新输入"
        exit 2
fi

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

#! /bin/bash
#写一个脚本,完成如下功能
#脚本能够接受一个参数
#如果参数1为quit, 则显示退出脚本,并执行正常退出
#如果参数1为yes, 则显示继续执行脚本
#否则,参数1为其他任意值,均执行非正常退出

[ $# -ne 1 ] && echo -e "Useage: $0 [quit|yes]\n其他参数均无效" && exit 1

if [[ $1 == quit ]]; then
        echo "quit script"
        exit 0
elif [[ $1 == yes ]]; then
        echo "conuting script"
else
        echo -e "Usage: $0 [quit|yes]\n其他参数均无效" && exit 2
fi

5. 写一个脚本,完成如下功能
传递一个参数给脚本,此参数为gzip, bzip2或者xz三者之一
a. 如果参数 1的值为gzip, 则使用tar和gzip归档压缩/etc目录至/backups目录中,并命名为/backups/etc-20160513.tar.gz
b. 如果参数 1的值为bzip2, 则使用tar和bzip2归档压缩/etc目录至/backups目录中,并命名为/backups/etc-20160513.tar.bz2
c. 如果参数 1的值为xz, 则使用tar和sz归档压缩/etc目录至/backups目录中,并命名为/backups/etc-20160513.tar.xz
d. 其他任意值,则显示错误压缩工具,并执行非正常退出

#! /bin/bash
#写一个脚本,完成如下功能
#传递一个参数给脚本,此参数为gzip, bzip2或者xz三者之一
#a. 如果参数 1的值为gzip, 则使用tar和gzip归档压缩/etc目录至/backups目录中,并命名为/backups/etc-20160513.tar.gz
#b. 如果参数 1的值为bzip2, 则使用tar和bzip2归档压缩/etc目录至/backups目录中,并命名为/backups/etc-20160513.tar.bz2
#c. 如果参数 1的值为xz, 则使用tar和sz归档压缩/etc目录至/backups目录中,并命名为/backups/etc-20160513.tar.xz
#d. 其他任意值,则显示错误压缩工具,并执行非正常退出


[ $# -ne 1 ] && echo -e "Usage: $0 [gzip|bzip2|xz], 其他参数均无效" && exit 1

[ -d /backup ] || mkdir -p /backup &> /dev/null

case $1 in
gzip)
        tar -zcvf /backup/etc-20170310.tar.gz /etc/*
;;
bzip2)
        tar -jcvf /backup/etc-20170310.tar.bz2 /etc/*
;;
xz)
        tar -Jcvf /backup/etc-20170310.tar.xz /etc/*
;;
*)
        echo -e "Unknow zip tools.\nUseage: $0 [gzip|bzip2|xz]"
;;
esac

6. 写一个脚本,接受一个路径参数
a. 如果为普通文件,则说明其可被正常访问
b. 如果是目录文件,则说明可对其使用cd命令
c. 如果为符号链接,则说明是个访问路径
d. 其他为无法判断

#! /bin/bash#写一个脚本,接受一个路径参数#a. 如果为普通文件,则说明其可被正常访问#b. 如果是目录文件,则说明可对其使用cd命令#c. 如果为符号链接,则说明是个访问路径#d. 其他为无法判断[ $# -ne 1 ] && echo -e "Usage: $0 DIRECTORY|FILE|LINKFILE" && exit 1if [ -d $1 ];then        echo "$1是一个目录文件,可以对其使用cd命令"elif [ -L $1 ];then        echo "$1是一个链接文件,链接的文件为$(ls -l $1 | cut -d ' ' -f 9,10,11)"elif [ -f $1 ];then        echo "$1是一个普通文件,可以正常访问"else        echo "无法判断此文件属性"        exit 3fi

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

(0)
JLJL
上一篇 2017-03-10
下一篇 2017-03-10

相关推荐

  • shell 脚本的编辑基础

          shell脚本是Linux运维工程师必须掌握的技能之一,shell脚本的使用让我们更好的操作Linux系统,方便了我们的执行。 一,编程基础 编程基本概念 编程逻辑处理方式:顺序执行,循环执行,选择执行 程序:指令+ 数据 shell 编程:过程式、解释执行 shell程序:提供了编程能力,解释执…

    Linux干货 2016-08-22
  • 由Linux中一个小问题引发的思考

    一、一个小问题 1、在学习Linux中我们经常会遇到很多有趣的小问题,今天笔者就遇到了一个很有意思的小问题,现在分享给大家:      “如何在本机字符终端登陆时,除显示原有信息外,再显示当前终端号,时间和主机名?” 2、实现方法如下:      输入vim /etc/…

    2017-07-16
  • N25–第十二周作业

    1、  请描述一次完整的http请求处理过程; (1)建立和处理连接:接收请求或者拒绝请求; (2)接收请求:接收来自于网络上的主机请求报文中对某特定的资源的一次请求的过程; (3)处理请求:对请求报文进行解析,获取客户端请求的资源及请求方法等相关信息 (4)访问资源:获取请求报文中请求的资源 (5)构建响应报文; (6)发送响应报文; (7)记录…

    2017-03-28
  • Linux基础之shell脚本编程(二)

    1、写一个脚本,完成以下功能    (1) 假设某目录(/etc/rc.d/rc3.d/)下分别有K开头的文件和S开头的文件若干;    (2) 显示所有以K开头的文件的文件名,并且给其附加一个stop字符串;    (3) 显示所有以S开头的文件的文件名,并且给其附加一个start字符串; &nb…

    Linux干货 2016-11-17
  • 马哥教育网络班21期+第3周课程练习

    1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 #思路:使用who命令列出列出当明显登录的所有用户,使用cut命令取出用户名,使用uniq命令去重 [root@Centos6 ~]# who | cut -d" " -f1&n…

    Linux干货 2016-07-07
  • yum相关知识及源码编译安装http

    二.源码编译安装http 获得源码,将源码放在/usr/local/src下,并将其解压缩到此目录下 进入解压缩文件下,查看INSTALL文件 文件内容如下 黄色区域即为安装步骤 在当前目录下执行./configure –prefix=/usr/local/appach2 编译  make make install  把目标文…

    系统运维 2016-08-24

评论列表(1条)

  • 马哥教育
    马哥教育 2017-03-15 00:44

    赞,几个功能都已经实现了,能给出运行示例会更好~加油~