第九周博客作业

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

#!/bin/bash

declare -i sum=0
declare -i sum_nologin=0

for i in $(cut -d: -f7 /etc/passwd);do
    if [ "$i" == "/sbin/nologin" ];then
        let sum_nologin++
    else
        let sum++
    fi
done

echo "Total user shell was '/sbin/nologin':$sum_nologin"
echo "Total user shell was not '/sbin/nologin' : $sum"

2、写一个脚本

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

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

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

#!/bin/bash

HOSTNAME=$(hostname)

if [ "$HOSTNAME" == "localhost" ];then
    hostname "www.magedu.com"
    echo "hostname already change to www.magedu.com"
else
    hostname
fi

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

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

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

#!/bin/bash

if [ $# -lt 1 ];then
    echo "Please input a disk path"
    exit 1
fi

if [ -b $1 ];then
    fdisk -l $1
else
    echo "No such partitions"
fi

4、写一个脚本,完成如下功能脚本能够接受一个参数;

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

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

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

#!/bin/bash

choose_yes () {
    read -p "Please choose one word (yes,quit or other word):" word
    choice
}

choice () {
    case $word in
        quit)
            echo "Exit the script"
            exit 2 ;;
        yes)
            echo "continue to excute the script"
            choose_yes ;;
        *)
            exit 3 ;;
esac
} 

choose_yes

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 "Usage:please enter a kind of compression method(gzip|bzip2|xz)"
    exit 1
fi

case $1 in
gzip)
    tar -zcf /backups/etc-$(date +%Y%m%d).tar.gz /etc ;;
bzip2)
    tar -jcf /backups/etc-$(date +%Y%m%d).tar.bz2 /etc ;;
xz)
    tar -Jcf /backups/etc-$(date +%Y%m%d).tar.xz /etc ;;
*)
    echo "no such compression tool"
    exit 2 ;;
esac

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

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

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

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

(4) 其它为无法判断

#!/bin/bash

if [ $# -lt 1 ]; then
    echo "Pleae enter a path."
    exit 1
fi

if [ -f $1 ]; then
    echo "You can visit it"
elif [ -d $1 ]; then
    echo "You can use 'cd' command"
elif [ -l $1 ]; then
    echo "It's a access path"
else
    echo "can't judge the path"
fi

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

#!/bin/bash

HOSTNAME=$(hostname)

[ -z HOSTNAME -o "$HOSTNAME" == "localhost" -o "$HOSTNAME" == "(none)" ] && hostname mail.magedu.com && echo "hostname already changed"

echo "The hostname is $(hostname)"

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

(0)
N25_PierceN25_Pierce
上一篇 2017-06-06
下一篇 2017-06-06

相关推荐

  • centos6.9实现网卡bonding

    centos6.9实现网卡bonding 为什么要用bonding  将多块网卡配置同一IP地址实际中是不可能的。通过bonding,虚拟一块网卡对外提供连接,物理网卡被修改为相同的MAC地址,这样可以实现多块网卡绑定同一IP地址,对外提供服务。用于网络负载均衡和网络冗余。 工作模式  bonding的模式:0-6,即:7种模式,这里我们…

    2017-08-20
  • 脚本及变量解析

    bash脚本编程 脚本文件格式: 第一行顶格:#!bin/bash  (shebang) 注释信息:以#开头 代码注释:好的程序员必备 适量的添加缩进或添加空白行以示分割 语言:编程语言格式:库,算法和数据结构 编程思想:      能够把学到的编程语言的语法格式随时转换为解决问题的思路     &…

    Linux干货 2016-08-12
  • shell脚本编写-5

      1、 数组 变量:存储单个元素的内存空间 数组:存储多个元素的连续的内存空间,相当于多个变量的集合 数组名和索引 索引:编号从0 开始,属于数值索引 注意:索引可支持使用自定义的格式,而不仅是数值格式,即为关联索引,bash4.0版本之后开始支持。而且bash 的数组支持稀疏格式(索引不连续) 1)、定义数组 声明数组: declare -a …

    Linux干货 2016-09-01
  • sed之高级命令的解析

                sed工作机制中另一个逻辑空间用于作为模式空间的好帮手,就是叫保持空间(hold space),在模式空间中处理一行内容会继续处理下一行,那么对于处理过的行可能还有其他处理,因此可以先把处理好的数据存放在hold s…

    Linux干货 2016-08-08
  • 一起学DNS系列(十四)DNS查询工具之DIG的使用(2)

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://jeffyyko.blog.51cto.com/28563/240243    上节谈到了利用DIG的+trace参数追踪域名解析的过程,其实除此之外,DIG还有一些其他的参数,这节会涉及到这…

    2015-03-17
  • sed命令用法

    sed命令 [option]  “script”  file sed命令是一种行编辑工具,他是逐行对文件进行编辑。sed命令有一个模式空间,他将一行命令读取进模式空间进行编辑,完成后将本行数据打印再读取下一行数据进行处理。 option: -n:静默模式不显示模式空间内容 -f:从指定文件中读取 -i:修改源文件(-i.###会自动将原文…

    Linux干货 2016-08-12

评论列表(1条)

  • 马哥教育
    马哥教育 2017-06-20 10:00

    写的很棒,希望可以再接再厉,继续保持