Week9’s homework

Week9's homework

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

#!/bin/bash
#
for i in $(cat /etc/passwd | cut -d: -f7);do
    if [ $i == "/sbin/nologin" ];then
        let nologin+=1
    else
        let login+=1
    fi
done
 
echo "nologin:$nologin."
echo "login:$login."

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

#!/bin/bash
#
hostName=$(hostname)
 
if [ ${hostName} == "localhost" ];then
    hostname www.magedu.com
else 
    hostname
fi

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

#!/bin/bash
#
[ $# -ne 1 ] && echo "You should give only one dev file path." && exit 1
 
if [ -b $1 ];then
    fdisk -l $1
else
    echo "The dev file path is not exist."
fi


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

#!/bin/bash
#
[ $# -ne 1 ] && echo "You should give only one parameter." && exit 2
 
case $1 in
quit)
    echo "Normal exit."
    exit 0
    ;;
yes)
    echo "Processing is continued."
    ;;
*)
    echo "Unnormal exit."
    exit 3
    ;;
esac


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
#
[ $# -ne 1 ] && echo "You should give only one parameter." && exit 1
 
mkdir /backups &>/dev/null
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 1
    ;;
esac

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

#!/bin/bash
#
[ $# -ne 1 ] && echo "You should give only one parameter." && exit 1
 
 
if [ -f $1 ];then
    echo "$1 is a common file,it's accessible."
elif [ -d $1 ];then
    echo "$1 is a directory,you can use cd command."
elif [ -l $1 ];then 
    echo "$1 is a sysbolic link."
else
    echo "$1 is unknown." 
fi

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

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

8、写一脚本,接受一个用户名为参数。
(1) 如果用户的id号为0,则显示其为管理员。
(2) 如果用户的id号大于0且小于500, 则显示其为系统用户。

#!/binbash
#
[ $# -ne 1 ] && echo "You should give only one parameter." && exit 1
 
if [ $(id -u $1) &>/dev/null -eq 0 ];then
    echo "$1 is system administrator."
elif [ $(id -u $1) &>/dev/null -lt 500 ];then
    echo "$1 is a system user."
fi

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

(0)
N24_lantianN24_lantian
上一篇 2016-12-24 13:26
下一篇 2016-12-24 19:38

相关推荐

  • 设计模式(十一)代理模式Proxy(结构型)

    1.概述        因为某个对象消耗太多资源,而且你的代码并不是每个逻辑路径都需要此对象, 你曾有过延迟创建对象的想法吗 ( if和else就是不同的两条逻辑路径) ? 你有想过限制访问某个对象,也就是说,提供一组方法给普通用户,特别方法给管理员用户?以上两种需求都非常类似,并且都需要解决一个更大的问题:你如何提供…

    Linux干货 2015-07-09
  • 3、文本处理命令、用户与组命令练习

    1.列出当前系统上所有已登录用户的用户名,同一个用户登录,则只显示一次 [root@localhost ~]# who root     tty1         2016-08-23 06…

    Linux干货 2016-09-19
  • 文件权限特殊管理之ACL

    ACL:access control list 权限访问列表 应用范围:所属主和所属组和其他用户之外的他叔用户 ACL是Linux系统权限额外支持的一项功能,需要文件系统的支持,例如:ReiserFS , EXT2 , EXT3 , EXT4 , JFS , XFS等都支持ACL功能 centos7 中:安装系统分区和装完系统之后自己手动添加的分区自动支持a…

    Linux干货 2016-08-05
  • 马哥教育网络班第19期+第7周课程练习

    1、创建一个10G分区,并格式为ext4文件系统; (1) 要求其block大小为2048, 预留空间百分比为2, 卷标为MYDATA, 默认挂载属性包含acl; (2) 挂载至/data/mydata目录,要求挂载时禁止程序自动运行,且不更新文件的访问时间戳; 2、创建一个大小为1G的swap分区,并创建好文件系统,并启用之; 3、写一个脚本  …

    Linux干货 2016-08-08
  • rsyslog日志系统

    一、前言  什么是日志?    日志就是历史事件,按时间序列将发生的事件予以记录;日志记录信息记录的是事件的发生时间以及事件内容  Linux下记录日志的系统:    syslog:是CentOS 5.0系统上使用的日志系统,有两类日志,分别是syslogd、klogd;    …

    Linux干货 2015-06-15
  • 1017练习题

    1017练习题 作业 10月17日 柴震 1.生产环境发现一台服务器系统时间产生偏差,造成服务异常,请帮忙校正。 hwclock 查看硬件是否准确,如准确无误,可以使用hwclock -s以硬件时间为准。 或者使用ntpdate命令指定一台NTP服务器,进行同步。 2.生产有一个数据同步脚本需要执行很长时间,怎样做到无人值守,在…

    Linux干货 2016-10-18

评论列表(1条)

  • 马哥教育
    马哥教育 2017-01-04 16:15

    写的很棒,看得出来下了很大的功夫,可以作为范文来展示,希望可以再接再厉