第九周作业

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

#!/bin/bash
LOGIN_USER=0
NOLOGIN_USER=0
for SHELLUSER in $(cat /etc/passwd | cut -d : -f 7);do
    if [ $SHELLUSER == "/sbin/nologin" ];then
            let NOLOGIN_USER++
    else
            let LOGIN_USER++
    fi
done
echo "login shell = $LOGIN_USER , nologin shell =$NOLOGIN_USER"
~                         

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

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

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

#!/bin/bash
if [[ "$1" =~ /dev/[hs]d* ]];then
    if ls /dev/[hs]d* | grep "$1" &> /dev/null ; then
        fdisk -l $1
    else
        echo "no this partitions"
        exit 2
    fi
else
        echo "wrong path"
fi

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

#!/bin/bash
read -p "Please give a parameter(yes or quit)" -t 5 NAME
if [ -z $NAME ];then
        echo "need a parameter"
        exit 2
elif [ $NAME == yes ]; then
        echo "continue scripting"
elif [ $NAME == quit ]; then
        echo "Normal exit"
        exit 0
else
        echo "wrong paramter"
        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
NAME=/backups/etc-20160613.tar
read -p "chose a compression tool(gzip/bzip2/xz)" -t 5 TOOL
cd /
mkdir backups &> /dev/null
if [ $TOOL == gzip ];then
        tar -zcf $NAME.gz etc
elif [ $TOOL == bzip2 ];then
        tar -jcf $NAME.bz2 etc
elif [ $TOOL == xz ];then
        tar -Jcf $NAME.xz etc
else
        echo "wrong compression tool"
fi

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

#!/bin/bash
read -p "please give a path to (file|dir|ln)"  NAME
if [[ -f $NAME ]];then
        echo "this is a file,you can access"
elif [[ -d $NAME ]];then
        echo "this is a Directory file,you can cd"
elif [[ -L $NAME ]];then
        echo "this is a path to file"
else
        echo "cannot judge"
fi  

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

#!/bin/bash
HOSTNAME=$(hostname)
if [ $HOSTNAME == "localhost" -o "(none)" ];then
        hostname mail.magedu.com
else
        echo "hostname is $HOSTNAME"
fi

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

(0)
M36-MasuriM36-Masuri
上一篇 2017-07-03
下一篇 2017-07-03

相关推荐

  • 第一周博客作业

       本文介紹計算机的组成及其功能 、Linux各版本的联系与区别、Linux的哲学思想、Linux系统上命令的使用格式及介绍部分命令、如何在Linux系统上获取帮助信息以及Linux发行版的基础目录名称以及规定。 一、计算机的组成及其功能 1)什么是计算机? 想了解计算机的组成,首先得了解计算机的含义。计算机其实是:接收用户输入指令与数…

    Linux干货 2016-12-04
  • Linux发行版的基础目录名称、命名法则及功能规定

    Linux发行版的基础目录名称、命名法则及功能规定 / 主层次的根,也是整个文件系统层次结构的根目录  /bin 存放系统的命令。  /boot 存放系统的启动文件,及其内核。  /dev 系统设备文件主目录。  /etc 系统主要配置文件主目录。  /home 普通用户家目录。  /lib 系统库…

    Linux干货 2016-10-31
  • bash脚本编程实例

    bash脚本编程实例 1.写一个脚本,使用ping命令探测172.16.250.1-172.16.250.254之间的所有主机的在线状态 在线的主机使用绿色显示 不在线的主机使用红色显示 #!/bin/bash for i in {1..254};do if /bin/ping -W 1 -c 1 172.16.250.${i} >> /dev/…

    Linux干货 2017-08-20
  • linux 学习之权限优先级

    linux下对同一文件的权限分成很多类,同时也可能对同一文件权限配置多种权限那么在这么多配置中,到底是怎么生效的呢?比如一个文件abc.txt属于wang用户,而同时对abc.txt又设置了ACL禁止 wang用户读写执行等等这些情况就是ACL的生效顺序完全理解,模拟出实验环境一一验证1,文件a属于mage用户,但ACL限制 mage读写执行 Paste_I…

    Linux干货 2017-05-29
  • 第三周作业

    1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可 who |cut -d ' ' -f1 |sort|uniq 2、取出最后登录到当前系统的用户的相关信息 last|head -1 3、取出当前系统上被用户当作其默认shell的最…

    Linux干货 2016-12-26

评论列表(1条)

  • 马哥教育
    马哥教育 2017-07-13 17:22

    不错,非常认真,脚本可以贴上运行的结果,加油!!!